Guess who's taking shape.

This commit is contained in:
Marisa the Magician 2021-11-18 21:30:50 +01:00
parent 6b686a336f
commit b0fbc69ed3
145 changed files with 1187 additions and 3 deletions

19
LICENSE.code Normal file
View File

@ -0,0 +1,19 @@
Copyright (c) 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.

1
LICENSE.data Normal file
View File

@ -0,0 +1 @@
This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

View File

@ -39,7 +39,7 @@ There are four weapons available throughout your journey, one of which you alrea
Fight your enemies with your own body. This shouldn't be very effective considering **Kirin**'s physical form, but it's helpful in a pinch.
Primary fire alternates between two quick jabs and a hook. This has some decent staggering potential, and can quickly push back small foes. Secondary fire opts for a swift side-sweeping kick. This is where **Kirin**'s lower body strength shines, pushing real hard against rows of enemies. This kick can also be quickly delivered while using other weapons through a dedicated keybind.
Primary fire alternates between two quick jabs and a hook. This has some decent staggering potential, and can quickly push back small foes. Secondary fire opts for a swift side-sweeping kick. This is where **Kirin**'s lower body strength shines, pushing real hard against rows of enemies.
The reload and zoom functions allow you to block and parry respectively. Blocking is mostly effective, thanks to the armored lining of your suit, especially around the cuffs. Parrying, if timed well, will leave an enemy stunned for a short period of time, upon which any damage to them is amplified. It is not possible to parry projectiles, you are not **Demo-chan**, nor know exactly how they can even do such a thing.
@ -59,7 +59,7 @@ Like any **Anarukon** firearm, the weapon not only needs to be reloaded with mor
Another usual **Anarukon** sidearm, often seen in the hands of mercenaries. At 5mm, it definitely doesn't have as much stopping power as the **Rykha**, but it can deliver the pain much faster and with lower recoil. Each magazine holds a whopping 20 rounds. **Kirin** can carry up to 80 rounds in total.
Primary fire does what one would expect, while secondary lets **Kirin** be a bit of a naughty boy and temporarily imbue the weapon with a poison enchantment, which will transfer to each fired bullet for a limited time.
Primary fire shoots alternating between each barrel at a steady rate, while secondary fire engages a *"dual-shot"* mode, which rapidly discharges both sides of the magazine. Only a select few models of the **Xei** have this feature, however, due to the complexity of its implementation.
As per usual, this weapon also has to be replenished with mana through the same method as the pistol, although due to its lower muzzle energy the mana supply tends to last much longer, and dry-firing isn't as damaging.
@ -67,7 +67,7 @@ As per usual, this weapon also has to be replenished with mana through the same
*"A genuine Sokana piece, it is an honor to wield it."*
This is basically an over-under shotgun powered by magic, designed by famed gunsmith **Irai Sokana**, grandmother of one of **Kirin**'s maids. Each cartridge comes packed with several iron pellets and a charge of pyromantic salt. **Kirin** can carry up to 20 cartridges in total.
This is basically an over-under shotgun powered by magic, designed by famed gunsmith **Irai Sokana**, grandmother of one of **Kirin**'s maids. Each cartridge comes packed with several iron pellets and a charge of pyromantic salt. **Kirin** can carry up to 18 cartridges in total.
Primary fire shoots the top barrel, while secondary fire shoots the bottom barrel. Due to the employment of solidified pyromantic mana, a potent burst of flame will be released with each shot, making attacks at point blank deal A LOT of fire damage. Pressing the zoom key toggles a *"linked fire"* mode, where either trigger press will fire both barrels at once.

3
credits.kirin Normal file
View File

@ -0,0 +1,3 @@
Title music:
Aviators - Let There Be Fire (Instrumental)
[https://soundoftheaviators.bandcamp.com/]

27
cvarinfo.base Normal file
View File

@ -0,0 +1,27 @@
// shared cvars
nosave float kirin_flashstrength = 1.0;
user float kirin_bumpstrength = 1.0;
nosave int kirin_hudmargin = 10;
nosave int kirin_maxshown = 4;
nosave int kirin_maxshownbig = 10;
nosave int kirin_maxpickup = 5;
nosave int kirin_chatduration = 25;
nosave int kirin_msgduration = 5;
nosave int kirin_pickduration = 3;
nosave bool kirin_shaders = true;
server bool kirin_blood = true;
server int kirin_maxblood = 400;
server int kirin_maxgibs = 100;
server int kirin_maxcasings = 200;
server int kirin_maxdebris = 500;
nosave bool kirin_fuzz = true;
server bool kirin_shadows = true;
nosave int kirin_shadowdist = 2000;
nosave int kirin_forcestats = 1;
server int kirin_drlaskill = 3;
nosave bool kirin_weapontooltips = true;
nosave string kirin_tooltipshown = "";
nosave noarchive bool kirin_tooltipnote = false;
nosave bool kirin_mm_enable = true;
nosave int kirin_playtime = 0;
// mod-specific cvars

View File

@ -0,0 +1 @@
Hexen

3
gameinfo.txt Normal file
View File

@ -0,0 +1,3 @@
STARTUPCOLORS = "FF A0 00", "80 00 00"
STARTUPTITLE = "RED STAR OF INNOCENCE"
STARTUPTYPE = "Doom"

78
gldefs.misc Normal file
View File

@ -0,0 +1,78 @@
HardwareShader Texture "graphics/tempbg.png"
{
Shader "shaders/glsl/Fuzz.fp"
Texture "noisetex" "textures/graynoise.png"
Define "KIRINCOLORS"
}
HardwareShader Texture "graphics/KirinLogo.png"
{
Shader "shaders/glsl/KirinLogoAnimated.fp"
Texture "LogoTex" "graphics/KirinLogo_Layers.png"
}
HardwareShader PostProcess beforebloom
{
Name "kirinsigil1"
Shader "shaders/pp/KirinSigil.fp" 330
Texture basetex "graphics/kirinsigil.png"
Texture fadetex "graphics/kirinsigil_fade.png"
Texture glowtex "graphics/kirinsigil_bloom.png"
Texture noisetex "textures/rgbnoise.png"
Uniform float timer
}
HardwareShader PostProcess beforebloom
{
Name "kirinsigil2"
Shader "shaders/pp/KirinSigilBlur.fp" 330
}
HardwareShader PostProcess beforebloom
{
Name "kirinsigil3"
Shader "shaders/pp/KirinSigilSmoke.fp" 330
Texture smoketex "graphics/kirinsigil_smoke.png"
Texture glowtex "graphics/kirinsigil_smokeglow.png"
Uniform float timer
}
HardwareShader Texture "graphics/title_kirin.png"
{
Shader "shaders/glsl/Bilinear.fp"
}
HardwareShader Texture "graphics/title_kirin_eye.png"
{
Shader "shaders/glsl/Bilinear.fp"
}
HardwareShader Texture "graphics/title_kirin_flame.png"
{
Shader "shaders/glsl/Bilinear_wave.fp"
}
HardwareShader Texture "graphics/title_smoke_0.png"
{
Shader "shaders/glsl/Bilinear.fp"
}
HardwareShader Texture "graphics/title_smoke_1.png"
{
Shader "shaders/glsl/Bilinear.fp"
}
HardwareShader Texture "graphics/title_smoke_2.png"
{
Shader "shaders/glsl/Bilinear.fp"
}
HardwareShader Texture "graphics/title_smoke_3.png"
{
Shader "shaders/glsl/Bilinear.fp"
}
HardwareShader Texture "graphics/title_smoke_4.png"
{
Shader "shaders/glsl/Bilinear.fp"
}
HardwareShader Texture "graphics/title_smoke_5.png"
{
Shader "shaders/glsl/Bilinear.fp"
}
HardwareShader Texture "graphics/title_smoke_6.png"
{
Shader "shaders/glsl/Bilinear.fp"
}
HardwareShader Texture "graphics/title_smoke_7.png"
{
Shader "shaders/glsl/Bilinear.fp"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

BIN
graphics/HUD/BarFlash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 B

BIN
graphics/HUD/BeanBox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

BIN
graphics/HUD/ChatBoxTop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

BIN
graphics/HUD/GrenadeBox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

BIN
graphics/HUD/HealthBar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

BIN
graphics/HUD/ManaBar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 B

BIN
graphics/HUD/ManaFlash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 B

BIN
graphics/HUD/MinimapBox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

BIN
graphics/HUD/PistolBuff.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

BIN
graphics/HUD/PistolMana.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 B

BIN
graphics/HUD/SMGAmmoBar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 B

BIN
graphics/HUD/SMGAmmoBox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

BIN
graphics/HUD/SMGChamber.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 B

BIN
graphics/HUD/SMGDisplay.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

BIN
graphics/HUD/SMGMana.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

BIN
graphics/HUD/StatusBox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

BIN
graphics/HUD/WeaponBox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

BIN
graphics/KirinIcon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

BIN
graphics/KirinLogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
graphics/KirinLogo_Glow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 MiB

BIN
graphics/M_KIRIN.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
graphics/bord_b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 B

BIN
graphics/bord_bl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 B

BIN
graphics/bord_br.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 B

BIN
graphics/bord_l.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 B

BIN
graphics/bord_r.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 B

BIN
graphics/bord_t.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 B

BIN
graphics/bord_tl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 B

BIN
graphics/bord_tr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 B

BIN
graphics/kirinback.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

BIN
graphics/kirincurs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

BIN
graphics/kirinpause.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 B

BIN
graphics/kirinsigil.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 825 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

BIN
graphics/title_grad.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

BIN
graphics/title_kirin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
graphics/title_smoke_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
graphics/title_smoke_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
graphics/title_smoke_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
graphics/title_smoke_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
graphics/title_smoke_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
graphics/title_smoke_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
graphics/title_smoke_6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
graphics/title_smoke_7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
hud_mockup.xcf Normal file

Binary file not shown.

17
keyconf.txt Normal file
View File

@ -0,0 +1,17 @@
addkeysection "$KIRIN_KEYS" "KIRIN_XANAI"
addmenukey "$KIRIN_PRIMARYFIRE" "+attack"
addmenukey "$KIRIN_SECONDARYFIRE" "+altattack"
addmenukey "$KIRIN_RELOADFIRE" "+reload"
addmenukey "$KIRIN_ZOOMFIRE" "+zoom"
addmenukey "$KIRIN_MELEE" "+user1"
addmenukey "$KIRIN_EXTRAFIRE" "+user4"
addmenukey "$SWWM_MINIMAPIN" "event swwmzoomin"
addmenukey "$SWWM_MINIMAPOUT" "event swwmzoomout"
defaultbind "mouse1" "+attack"
defaultbind "mouse2" "+altattack"
defaultbind "r" "+reload"
defaultbind "e" "+zoom"
defaultbind "f" "+user1"
defaultbind "g" "+user4"
defaultbind "kp+" "event swwmzoomin"
defaultbind "kp-" "event swwmzoomout"

11
language.def_base Normal file
View File

@ -0,0 +1,11 @@
[default]
// tags, pickups
T_KIRIN = "Kirin Xanai";
// quit messages
QUITMSG = "Farewell, brave soul...";
// misc
KIRIN_TITLEPRESENTSA = "UnSX Team";
KIRIN_TITLEPRESENTSB = "presents";
KIRIN_TITLEMODBYA = "a mod by";
KIRIN_TITLEMODBYB = "Marisa Kirisame";
// weapon tooltips

42
language.def_menu Normal file
View File

@ -0,0 +1,42 @@
[default]
// keybinds
KIRIN_KEYS = "RED STAR OF INNOCENCE Bindings";
KIRIN_PRIMARYFIRE = "Primary Fire";
KIRIN_SECONDARYFIRE = "Secondary Fire";
KIRIN_RELOADFIRE = "Reload / Block";
KIRIN_ZOOMFIRE = "Alt Reload / Parry";
KIRIN_MELEE = "Quick Kick";
KIRIN_EXTRAFIRE = "Grenade";
// skills
KIRIN_SKCHILL="\cnBlue Star\c-";
KIRIN_SKEASY="\cjWhite Star\c-";
KIRIN_SKNORMAL="\cfYellow Star\c-";
KIRIN_SKHARD="\ciOrange Star\c-";
KIRIN_SKHARDCORE="\crRed Star\c-";
KIRIN_SKHARDCORECONFIRM="\crAre you sure you want to do that?\nYou might get your ass kicked.\c-\n\n\cgFast monsters\n1.5x monster health & damage\n25% extra aggressiveness\nCheats are disabled\nCoop monsters will spawn\c-\n\n(Press Y for a challenge)";
// mod menu
KIRIN_MTITLE = "RED STAR OF INNOCENCE Options";
KIRIN_MCREDS = "RED STAR OF INNOCENCE Credits";
// credits
KIRIN_CSTITLE = "UnSX Side Story: Kirin";
KIRIN_CSTITLE2 = "Undying Born Under An Innocent Red Star";
// Help menu
KIRIN_HELP_NPAGE = "6";
KIRIN_HELP_PAGE1 = "The Story So Far";
KIRIN_HELP_PAGE1_TXT =
"TODO";
KIRIN_HELP_PAGE2 = "Who Is Kirin Xanai";
KIRIN_HELP_PAGE2_TXT =
"TODO";
KIRIN_HELP_PAGE3 = "Emperor's Arsenal (Part 1: Weapons)";
KIRIN_HELP_PAGE3_TXT =
"TODO";
KIRIN_HELP_PAGE4 = "Emperor's Arsenal (Part 2: Items)";
KIRIN_HELP_PAGE4_TXT =
"TODO";
KIRIN_HELP_PAGE5 = "Emperor's Arsenal (Part 3: Powerups)";
KIRIN_HELP_PAGE5_TXT =
"TODO";
KIRIN_HELP_PAGE6 = "Additional Tips";
KIRIN_HELP_PAGE6_TXT =
"TODO";

3
language.modversion Normal file
View File

@ -0,0 +1,3 @@
[default]
KIRIN_MODVER="\cxRED STAR OF INNOCENCE\c- \cw0.1a \cu(Thu 18 Nov 21:31:08 CET 2021)\c-";
KIRIN_SHORTVER="\cw0.1a \cu(2021-11-18 21:31:08)\c-";

154
menudef.txt Normal file
View File

@ -0,0 +1,154 @@
OptionValue "SWWMEnemyDropType"
{
-1, "$SWWM_DROPS_NONE"
0, "$SWWM_DROPS_AMMO"
1, "$SWWM_DROPS_WEAPONS"
}
OptionValue "SWWMForceStats"
{
0, "$SWWM_STATS_DISABLED"
1, "$SWWM_STATS_ALWAYS"
2, "$SWWM_STATS_MAPNAME"
}
OptionValue "SWWMDRLASkill"
{
0, "$SWWM_DRLASKILL_BABY"
1, "$SWWM_DRLASKILL_EASY"
2, "$SWWM_DRLASKILL_NORMAL"
3, "$SWWM_DRLASKILL_HARD"
4, "$SWWM_DRLASKILL_NIGHTMARE"
5, "$SWWM_DRLASKILL_TECHNOPHOBIA"
6, "$SWWM_DRLASKILL_ARMAGEDDON"
7, "$SWWM_DRLASKILL_ADAPTIVE"
}
OptionValue "SWWMPistolStart"
{
0, "$TXT_NO"
1, "$SWWM_PISTOLSTART_MAP"
2, "$SWWM_PISTOLSTART_CLUSTER"
}
OptionMenu "KirinOptionMenu"
{
Class "SWWMOptionMenu"
Title "$KIRIN_MTITLE"
SafeCommand "$SWWM_CRESET", "event swwmresetcvars"
StaticText " "
StaticText "$SWWM_PTITLE", "Orange"
SWWMPlayTime "$SWWM_PLAYTIME", "kirin_playtime"
StaticText " "
StaticText "$SWWM_OTITLE", "Orange"
Option "$SWWM_SHADERS", "kirin_shaders", "YesNo"
Slider "$SWWM_FLASH", "kirin_flashstrength", 0.0, 1.0, 0.1, 1
Slider "$SWWM_BUMP", "kirin_bumpstrength", 0.0, 1.0, 0.1, 1
Option "$SWWM_MM_ENABLE", "kirin_mm_enable", "YesNo"
Option "$SWWM_FORCESTATS", "kirin_forcestats", "SWWMForceStats"
Slider "$SWWM_HUDMARGIN", "kirin_hudmargin", 0, 40, 1, 0
Slider "$SWWM_MAXMSG", "kirin_maxshown", 1, 10, 1, 0
Slider "$SWWM_MAXMSGBIG", "kirin_maxshownbig", 1, 20, 1, 0
Slider "$SWWM_MAXPICK", "kirin_maxpickup", 1, 10, 1, 0
Slider "$SWWM_CHATLEN", "kirin_chatduration", 1, 30, 1, 0
Slider "$SWWM_MSGLEN", "kirin_msgduration", 1, 30, 1, 0
Slider "$SWWM_PICKLEN", "kirin_pickduration", 1, 30, 1, 0
Option "$SWWM_FUZZ", "kirin_fuzz", "YesNo"
StaticText " "
StaticText "$SWWM_ETITLE", "Orange"
Option "$SWWM_SHADOWS", "kirin_shadows", "YesNo"
ScaleSlider "$SWWM_SHADOWDIST", "kirin_shadowdist", -1, 4000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED"
Option "$SWWM_BLOOD", "kirin_blood", "YesNo"
ScaleSlider "$SWWM_MAXBLOOD", "kirin_maxblood", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED"
ScaleSlider "$SWWM_MAXGIBS", "kirin_maxgibs", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED"
ScaleSlider "$SWWM_MAXCASINGS", "kirin_maxcasings", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED"
ScaleSlider "$SWWM_MAXDEBRIS", "kirin_maxdebris", -1, 1000, 1, "$SWWM_NONE", "$SWWM_UNLIMITED"
StaticText " "
StaticText "$SWWM_ITITLE", "Orange"
Option "$SWWM_WEAPONTOOLTIPS", "kirin_weapontooltips", "YesNo"
SafeCommand "$SWWM_RESETTOOLTIPS", "event swwmresettooltips"
StaticText " "
StaticText "$SWWM_MCTITLE", "Orange"
Option "$SWWM_DRLASKILL", "kirin_drlaskill", "SWWMDRLASkill"
StaticText " "
StaticText " "
}
AddOptionMenu "OptionsMenu"
{
Submenu "$KIRIN_MTITLE", "KirinOptionMenu"
Submenu "$KIRIN_MCREDS", "KirinCreditsMenu"
}
AddOptionMenu "OptionsMenuSimple"
{
Submenu "$KIRIN_MTITLE", "KirinOptionMenu"
Submenu "$KIRIN_MCREDS", "KirinCreditsMenu"
}
ListMenu "MainMenu"
{
Class "SWWMMainMenu"
Size Clean
Font "BigFont", "Orange", "Gold"
Selector "graphics/KirinIcon.png", -24, 0
LineSpacing 36
SWWMLogo
Position 0, 56
SWWMTextItemM "$MNU_NEWGAME", "n", "PlayerclassMenu"
SWWMTextItemM "$MNU_OPTIONS", "o", "OptionsMenu"
SWWMTextItemM "$MNU_GAMEFILES", "g", "GameFilesMenu"
SWWMTextItemM "$MNU_INFO", "i", "ReadThisMenu"
SWWMTextItemM "$MNU_QUITGAME", "q", "QuitMenu"
}
ListMenu "MainMenuTextOnly"
{
Class "SWWMMainMenu"
Size Clean
Font "BigFont", "Orange", "Gold"
Selector "graphics/KirinIcon.png", -24, 0
LineSpacing 36
SWWMLogo
Position 0, 56
SWWMTextItemM "$MNU_NEWGAME", "n", "PlayerclassMenu"
SWWMTextItemM "$MNU_OPTIONS", "o", "OptionsMenu"
SWWMTextItemM "$MNU_GAMEFILES", "g", "GameFilesMenu"
SWWMTextItemM "$MNU_INFO", "i", "ReadThisMenu"
SWWMTextItemM "$MNU_QUITGAME", "q", "QuitMenu"
}
ListMenu "GameFilesMenu"
{
Class "SWWMCleanMenu"
Size Clean
Font "BigFont", "Orange", "Gold"
Selector "graphics/KirinIcon.png", -24, 0
LineSpacing 36
Position 0, 88
SWWMTextItemM "$MNU_LOADGAME", "l", "LoadGameMenu"
SWWMTextItemM "$MNU_SAVEGAME", "s", "SaveGameMenu"
}
ListMenu "EpisodeMenu"
{
Class "SWWMBigMenuHack"
Size Clean
IfGame(Doom, Heretic, Hexen, Strife)
{
NetgameMessage "$NEWGAME"
}
IfGame(Chex)
{
NetgameMessage "$CNEWGAME"
}
Font "BigFont", "Gold", "Fire"
Selector "graphics/KirinIcon.png", -24, 0
LineSpacing 0
SWWMStaticTextM 0, 0, "$MNU_EPISODE", "Orange"
Position 0, 0
}
ListMenu "SkillMenu"
{
Class "SWWMBigMenuHack"
Size Clean
Font "BigFont", "Gold", "Fire"
Selector "graphics/KirinIcon.png", -24, 0
LineSpacing 0
SWWMStaticTextM 0, 0, "$MNU_CHOOSESKILL", "Orange"
Position 0, 0
}

BIN
music/kirin_titlemus.ogg Normal file

Binary file not shown.

View File

@ -0,0 +1,26 @@
// This should act as Bilinear filtering when texture filtering is disabled
// the algo is pretty much public domain, so no credit given
vec4 BilinearSample( in vec2 size, in vec2 pxsize, in vec2 pos )
{
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);
}
void SetupMaterial( inout Material mat )
{
vec2 size = textureSize(tex,0);
vec2 pxsize = vec2(1./size.x,1./size.y);
vec2 pos = vTexCoord.st;
pos.x -= .15*sin(pos.y*13.+timer*3.3)*clamp(.9-pos.y,0.,1.);
pos.y -= .13*cos(pos.x*9.+timer*2.4)*clamp(.9-pos.y,0.,1.);;
mat.Base = BilinearSample(size,pxsize,pos);
mat.Normal = ApplyNormalMap(pos);
}

View File

@ -0,0 +1,135 @@
// ah shit here we go again
#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;
vec2 warpcoord( in vec2 uv )
{
vec2 offset = vec2(0,0);
offset.x = sin(pi*2.*(uv.x*8.+timer*.5))*.01;
offset.y += timer*.25;
offset.x = cos(pi*2.*(uv.y*4.+timer*.5))*.01;
return fract(uv+offset);
}
vec2 warpcoord2( in vec2 uv )
{
vec2 offset = vec2(0,0);
offset.y = sin(pi*2.*(uv.x*4.+timer*.25))*.01;
offset.x = cos(pi*2.*(uv.y*2.+timer*.25))*.01;
return fract(uv+offset);
}
vec4 BilinearSampleNoWrap( 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);
}
vec4 BilinearSample( in sampler2D tex, in vec2 pos, in vec2 size, in vec2 pxsize )
{
vec2 disp = floor(pos*vec2(2.,4.))/vec2(2.,4.);
vec2 f = fract(pos*size);
pos += (.5-f)*pxsize;
vec4 p0q0 = texture(tex,fract((pos*vec2(2.,4.)))/vec2(2.,4.)+disp);
vec4 p1q0 = texture(tex,fract((pos+vec2(pxsize.x,0))*vec2(2.,4.))/vec2(2.,4.)+disp);
vec4 p0q1 = texture(tex,fract((pos+vec2(0,pxsize.y))*vec2(2.,4.))/vec2(2.,4.)+disp);
vec4 p1q1 = texture(tex,fract((pos+vec2(pxsize.x,pxsize.y))*vec2(2.,4.))/vec2(2.,4.)+disp);
vec4 pInterp_q0 = mix(p0q0,p1q0,f.x);
vec4 pInterp_q1 = mix(p0q1,p1q1,f.x);
return mix(pInterp_q0,pInterp_q1,f.y);
}
// based on gimp color to alpha, but simplified
vec4 blacktoalpha( in vec4 src )
{
vec4 dst = src;
float dist = 0., alpha = 0.;
float d, a;
a = clamp(dst.r,0.,1.);
if ( a > alpha )
{
alpha = a;
dist = d;
}
a = clamp(dst.g,0.,1.);
if ( a > alpha )
{
alpha = a;
dist = d;
}
a = clamp(dst.b,0.,1.);
if ( a > alpha )
{
alpha = a;
dist = d;
}
if ( alpha > 0. )
{
float ainv = 1./alpha;
dst.rgb *= ainv;
}
dst.a *= alpha;
return dst;
}
void SetupMaterial( inout Material mat )
{
// store these to save some time
vec2 size = vec2(textureSize(LogoTex,0));
vec2 pxsize = 1./size;
// y'all ready for this multilayered madness?
vec2 uv = vTexCoord.st;
// copy
vec4 base = BilinearSample(LogoTex,warpcoord2(uv)*vec2(.5,.25),size,pxsize);
// hard light
vec4 tmp = BilinearSampleNoWrap(LogoTex,uv*vec2(.5,.25)+vec2(0.,.25),size,pxsize);
base.r = hardlight(tmp.r,base.r);
base.g = hardlight(tmp.g,base.g);
base.b = hardlight(tmp.b,base.b);
// add
tmp = BilinearSampleNoWrap(LogoTex,uv*vec2(.5,.25)+vec2(0.,.5),size,pxsize);
base.rgb += tmp.rgb;
// color to alpha
base = blacktoalpha(base);
// separate layer
tmp = BilinearSample(LogoTex,warpcoord(uv)*vec2(.5,.25)+vec2(0.,.75),size,pxsize);
// overlay
vec4 tmp2 = BilinearSampleNoWrap(LogoTex,uv*vec2(.5,.25)+vec2(.5,0.),size,pxsize);
tmp.r = overlay(tmp.r,tmp2.r);
tmp.g = overlay(tmp.g,tmp2.g);
tmp.b = overlay(tmp.b,tmp2.b);
// add
tmp2 = BilinearSampleNoWrap(LogoTex,uv*vec2(.5,.25)+vec2(.5,.25),size,pxsize);
tmp.rgb += tmp2.rgb;
// alpha mask
tmp.a = BilinearSampleNoWrap(LogoTex,uv*vec2(.5,.25)+vec2(.5,.5),size,pxsize).x;
tmp.rgb *= tmp.a;
// alpha blend
tmp2 = BilinearSampleNoWrap(LogoTex,uv*vec2(.5,.25)+vec2(.5,.75),size,pxsize);
vec4 tmp3;
tmp3.a = tmp2.a+tmp.a*(1.-tmp2.a);
tmp3.rgb = (tmp2.rgb*tmp2.a+tmp.rgb*tmp.a*(1.-tmp2.a))/tmp3.a;
if ( tmp3.a == 0. ) tmp3.rgb = vec3(0.);
// alpha blend back onto base layer
tmp.a = tmp3.a+base.a*(1.-tmp3.a);
tmp.rgb = (tmp3.rgb*tmp3.a+base.rgb*base.a*(1.-tmp3.a))/tmp.a;
if ( tmp.a == 0. ) tmp.rgb = vec3(0.);
base = tmp;
// clamp borders
vec2 sz = vec2(2048.,1024.);
vec2 px = uv*sz;
if ( (px.x <= 1) || (px.x >= (sz.x-1)) || (px.y <= 1) || (px.y >= (sz.y-1)) )
base = vec4(0.);
// ding, logo's done
mat.Base = base;
mat.Normal = ApplyNormalMap(vTexCoord.st);
}

Some files were not shown because too many files have changed in this diff Show More