first release

This commit is contained in:
cclecle
2022-11-28 00:53:20 +00:00
commit a5f1aad5bb
22 changed files with 433 additions and 0 deletions

22
Readme.txt Normal file
View File

@@ -0,0 +1,22 @@
ChaChaComboGibv1a - ChaCha (2022)
== A ComboGib mutator for UT2004 ! ==
Behavior:
-> No configuration needed
-> Beam and (main) Shock ball change colour depending on team
Single player on your computer:
=> Install package (sources not needed)
Multiplayer:
=> Install package (sources not needed)
=> Install redirect
=> Add ChaChaComboGibv1a to ServerPackages
=> Add ChaChaComboGibv1a.ChaChaComboGib to Mutator list
Version History:
1a (11/22): Initial release

Binary file not shown.

Binary file not shown.

121
Run.sh Normal file
View File

@@ -0,0 +1,121 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
OUTPUT_DIR="$2"
CFG_FILE="$3"
DEFAULT_CFG_FILE=UT2004.ini
function add_iniKeyEx() {
crudini --set $OUTPUT_DIR/System/$1 $2 __$3 $4
# Warning: ugly hack with sed to allow multiple key instances + to remove space around '='
sed -i "s/[[:space:]]*__$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')[[:space:]]*=[[:space:]]*/$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')=/g" $OUTPUT_DIR/System/$1
}
# !!Warning!! section is not considered
function del_iniKeyEx() {
sed -i "/[[:space:]]*$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')[[:space:]]*=[[:space:]]*$(echo $4 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')/d" $OUTPUT_DIR/System/$1
}
function add_iniKey() {
add_iniKeyEx $CFG_FILE $1 $2 $3
}
# !!Warning!! section is not considered
function del_iniKey() {
del_iniKeyEx $CFG_FILE $1 $2 $3
}
function add_ServerPackage() {
add_iniKey 'Engine.GameEngine' ServerPackages $1
}
function del_ServerPackage() {
del_iniKey 'Engine.GameEngine' ServerPackages $1
}
function add_ServerActors() {
add_iniKey 'Engine.GameEngine' ServerActors $1
}
function del_ServerActors() {
del_iniKey 'Engine.GameEngine' ServerActors $1
}
function getmodprefix() {
_File=$(find $OUTPUT_DIR/System -type f -iname "ChaChaComboGibv*\.u" -exec basename {} \; | sort -nr | head -n 1)
BaseName="${_File%.*}"
echo "$BaseName"
}
function install() {
rsync -a $SCRIPT_DIR/Help/ $OUTPUT_DIR/Help/ --exclude '.git'
rsync -a $SCRIPT_DIR/System/ $OUTPUT_DIR/System/ --exclude '.git'
echo install ok
}
function enable() {
BaseName="$(getmodprefix)"
add_ServerPackage $BaseName
echo enable ok
}
function disable() {
BaseName="$(getmodprefix)"
del_ServerPackage $BaseName
echo disable ok
}
function show_help() {
echo
echo "Usage: $0 { getmodprefix | install | enable | disable } <UT2k4_INSTALL_DIR> [<UT2k4_CONFIG_FILE>]"
echo
}
function check_cfg_file() {
if [ -z ${CFG_FILE} ]
then
echo "CFG_FILE is unset, setting it to $DEFAULT_CFG_FILE"
CFG_FILE=$DEFAULT_CFG_FILE
else
echo "CFG_FILE is set to '$CFG_FILE'"
fi
if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ]
then
echo "$OUTPUT_DIR/System/$CFG_FILE does not exist"
show_help
exit 9999 # die with error code 9999
fi
}
function check_game_dir() {
### Check if a directory does not exist ###
if [ ! -d $OUTPUT_DIR ]
then
echo "incorrect <UT2k4_INSTALL_DIR>"
show_help
exit 9999 # die with error code 9999
fi
}
case "$1" in
'getmodprefix')
check_game_dir
getmodprefix
;;
'install')
check_game_dir
install
;;
'enable')
check_game_dir
check_cfg_file
disable
enable
;;
'disable')
check_game_dir
check_cfg_file
disable
;;
*)
show_help
exit 1
;;
esac
exit 0

View File

@@ -0,0 +1,22 @@
class ChaChaComboGib extends MutInstaGib
config;
function ModifyPlayer(Pawn Other)
{
Super.ModifyPlayer(Other);
Other.GiveWeapon(WeaponString);
if ( NextMutator != None )
{
NextMutator.ModifyPlayer(Other);
}
}
defaultproperties
{
WeaponName="ChaChaComboShockRifle"
WeaponString="ChaChaComboGibv1a.ChaChaComboShockRifle"
FriendlyName="ChaChaComboGib"
}

View File

@@ -0,0 +1,11 @@
class ChaChaComboGibProjFire extends ShockProjFire;
var class<ShockProjectile> ProjectileClassRED;
defaultproperties
{
ProjectileClass=Class'ChaChaComboGibv1a.ChaChaComboGibProjectile'
}

View File

@@ -0,0 +1,10 @@
class ChaChaComboGibProjFire_RED extends ShockProjFire;
var class<ShockProjectile> ProjectileClassRED;
defaultproperties
{
ProjectileClass=Class'ChaChaComboGibv1a.ChaChaComboGibProjectile_RED'
}

View File

@@ -0,0 +1,10 @@
class ChaChaComboGibProjectile extends ShockProjectile;
defaultproperties
{
Texture=Texture'ChaChaComboGibv1a.Shock.shock_core_low_blue'
DrawScale=0.700000
Skins(0)=Texture'ChaChaComboGibv1a.Shock.shock_core_low_blue'
ComboDamageType=Class'XWeapons.DamTypeSuperShockBeam'
}

View File

@@ -0,0 +1,10 @@
class ChaChaComboGibProjectile_RED extends ShockProjectile;
defaultproperties
{
Texture=Texture'ChaChaComboGibv1a.Shock.shock_core_low_red'
DrawScale=0.700000
Skins(0)=Texture'ChaChaComboGibv1a.Shock.shock_core_low_red'
ComboDamageType=Class'XWeapons.DamTypeSuperShockBeam'
}

View File

@@ -0,0 +1,81 @@
class ChaChaComboGibRiflePickup extends SuperShockRiflePickup;
static function StaticPrecache(LevelInfo L)
{
if ( class'ShockRifle'.Default.bUseOldWeaponMesh )
{
L.AddPrecacheMaterial(Texture'WeaponSkins.Skins.ShockTex0');
L.AddPrecacheMaterial(Texture'WeaponSkins.ShockLaser.lasermist');
}
L.AddPrecacheMaterial(Material'XEffects.ShockHeatDecal');
L.AddPrecacheMaterial(Material'XEffectMat.shock_flash');
L.AddPrecacheMaterial(Material'XEffectMat.shock_flare_a');
L.AddPrecacheMaterial(Material'XEffectMat.shock_core');
L.AddPrecacheMaterial(Material'XEffectMat.purple_line');
L.AddPrecacheMaterial(Material'XEffectMat.shock_sparkle');
L.AddPrecacheMaterial(Material'XEffectMat.shock_core_low');
L.AddPrecacheMaterial(Material'XEffectMat.shock_Energy_green_faded');
L.AddPrecacheMaterial(Material'XEffectMat.Shock_Elec_a');
L.AddPrecacheMaterial(Material'XEffectMat.shock_gradient_b');
L.AddPrecacheMaterial(Material'XEffectMat.Shock_ring_a');
L.AddPrecacheMaterial(Material'XEffectMat.ShockComboFlash');
L.AddPrecacheMaterial(Material'XGameShaders.shock_muzflash_1st');
L.AddPrecacheMaterial(Material'XGameShaders.WeaponShaders.shock_muzflash_3rd');
L.AddPrecacheMaterial(Material'XWeapons_rc.ShockBeamTex');
L.AddPrecacheMaterial(Material'XEffects.SaDScorcht');
L.AddPrecacheMaterial(Material'DeployableTex.C_T_Electricity_SG');
L.AddPrecacheMaterial(Material'UT2004Weapons.ShockRipple');
L.AddPrecacheStaticMesh(StaticMesh'Editor.TexPropSphere');
L.AddPrecacheStaticMesh(StaticMesh'NewWeaponPickups.ShockPickupSM');
L.AddPrecacheMaterial(Material'ChaChaComboGibv1a.shock_core_low_blue');
L.AddPrecacheMaterial(Material'ChaChaComboGibv1a.shock_core_low_red');
}
simulated function UpdatePrecacheMaterials()
{
if ( class'ShockRifle'.Default.bUseOldWeaponMesh )
{
Level.AddPrecacheMaterial(Texture'WeaponSkins.Skins.ShockTex0');
Level.AddPrecacheMaterial(Texture'WeaponSkins.ShockLaser.lasermist');
}
Level.AddPrecacheMaterial(Material'XEffects.ShockHeatDecal');
Level.AddPrecacheMaterial(Material'XEffectMat.shock_flash');
Level.AddPrecacheMaterial(Material'XEffectMat.shock_flare_a');
Level.AddPrecacheMaterial(Material'XEffectMat.shock_core');
Level.AddPrecacheMaterial(Material'XEffectMat.purple_line');
Level.AddPrecacheMaterial(Material'XEffectMat.shock_sparkle');
Level.AddPrecacheMaterial(Material'XEffectMat.shock_core_low');
Level.AddPrecacheMaterial(Material'XEffectMat.shock_Energy_green_faded');
Level.AddPrecacheMaterial(Material'XEffectMat.Shock_Elec_a');
Level.AddPrecacheMaterial(Material'XEffectMat.shock_gradient_b');
Level.AddPrecacheMaterial(Material'XEffectMat.Shock_ring_a');
Level.AddPrecacheMaterial(Material'XEffectMat.ShockComboFlash');
Level.AddPrecacheMaterial(Material'XGameShaders.shock_muzflash_1st');
Level.AddPrecacheMaterial(Material'XGameShaders.WeaponShaders.shock_muzflash_3rd');
Level.AddPrecacheMaterial(Material'XWeapons_rc.ShockBeamTex');
Level.AddPrecacheMaterial(Material'DeployableTex.C_T_Electricity_SG');
Level.AddPrecacheMaterial(Material'XEffects.SaDScorcht');
Level.AddPrecacheMaterial(Material'UT2004Weapons.ShockRipple');
Level.AddPrecacheMaterial(Material'ChaChaComboGibv1a.shock_core_low_blue');
Level.AddPrecacheMaterial(Material'ChaChaComboGibv1a.shock_core_low_red');
super.UpdatePrecacheMaterials();
}
defaultproperties
{
MaxDesireability=0.650000
InventoryType=Class'ChaChaComboGibv1a.ChaChaComboShockRifle'
PickupMessage="You got the ChaCha ComboGib."
PickupSound=Sound'PickupSounds.ShockRiflePickup'
PickupForce="ChaChaComboShockRifle"
DrawType=DT_StaticMesh
StaticMesh=StaticMesh'WeaponStaticMesh.ShockRiflePickup'
DrawScale=0.500000
}

View File

@@ -0,0 +1,35 @@
//=============================================================================
// SuperShockRifle
//=============================================================================
class ChaChaComboShockRifle extends SuperShockRifle
HideDropDown
CacheExempt;
#exec OBJ LOAD FILE=ChaChaComboGibv1a.utx
simulated event PreBeginPlay()
{
Log("Instigator="$Instigator);
if ( (Instigator.PlayerReplicationInfo.Team != None) && (Instigator.PlayerReplicationInfo.Team.TeamIndex == 1) )
{
FireModeClass[1]=Class'ChaChaComboGibv1a.ChaChaComboGibProjFire';
Log("BLUE");
}
else
{
FireModeClass[1]=Class'ChaChaComboGibv1a.ChaChaComboGibProjFire_RED';
Log("RED");
}
}
defaultproperties
{
FireModeClass(0)=Class'XWeapons.SuperShockBeamFire'
//FireModeClass(1)=Class'XWeapons.ShockProjFire'
FireModeClass(1)=Class'ChaChaComboGibv1a.ChaChaComboGibProjFire'
PickupClass=Class'ChaChaComboGibv1a.ChaChaComboGibRiflePickup'
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

48
Sources/build.bat Normal file
View File

@@ -0,0 +1,48 @@
@echo off
setlocal enabledelayedexpansion enableextensions
set BUILD_DIR=%~dp0
pushd "%BUILD_DIR%"
for /f "delims=" %%X IN ('dir /B /A /S *') DO (
for %%D in ("%%~dpX\.") do (
set PACKAGE_NAME=%%~nxD
goto FoundPkgName
)
)
:FoundPkgName
pushd ..\System
:: make sure to always rebuild the package
:: New package GUID, No doubts about staleness
del %PACKAGE_NAME%.u
del %PACKAGE_NAME%.ucl
ucc make -ini="%BUILD_DIR%make.ini"
popd
:: dont do the post-process steps if compilation failed
if ERRORLEVEL 1 goto cleanup
pushd ..\System
:: Generate compressed file for redirects
ucc compress %PACKAGE_NAME%.u
:: Dump i18n strings
del %PACKAGE_NAME%.int
ucc dumpint %PACKAGE_NAME%.u
:: copy to release location
copy %PACKAGE_NAME%.u "%BUILD_DIR%System" >NUL
copy %PACKAGE_NAME%.ucl "%BUILD_DIR%System" >NUL
copy %PACKAGE_NAME%.int "%BUILD_DIR%System" >NUL
copy %PACKAGE_NAME%.u.uz2 "%BUILD_DIR%System" >NUL
popd
if exist "PostBuildHook.bat" call "PostBuildHook.bat"
:cleanup
popd
endlocal

56
Sources/make.ini Normal file
View File

@@ -0,0 +1,56 @@
[Engine.Engine]
EditorEngine=Editor.EditorEngine
[Editor.EditorEngine]
CacheSizeMegs=32
EditPackages=Core
EditPackages=Engine
EditPackages=Fire
EditPackages=Editor
EditPackages=UnrealEd
EditPackages=IpDrv
EditPackages=UWeb
EditPackages=GamePlay
EditPackages=UnrealGame
EditPackages=XGame_rc
EditPackages=XEffects
EditPackages=XWeapons_rc
EditPackages=XPickups_rc
EditPackages=XPickups
EditPackages=XGame
EditPackages=XWeapons
EditPackages=XInterface
EditPackages=XAdmin
EditPackages=XWebAdmin
EditPackages=Vehicles
EditPackages=BonusPack
EditPackages=SkaarjPack_rc
EditPackages=SkaarjPack
EditPackages=UTClassic
EditPackages=UT2k4Assault
EditPackages=Onslaught
EditPackages=GUI2K4
EditPackages=UT2k4AssaultFull
EditPackages=OnslaughtFull
EditPackages=xVoting
EditPackages=StreamlineFX
EditPackages=UTV2004c
EditPackages=UTV2004s
EditPackages=ChaChaComboGibv1a
[Core.System]
SavePath=../Save
CachePath=../Cache
CacheExt=.uxx
CacheRecordPath=../System/*.ucl
MusicPath=../Music
SpeechPath=../Speech
Paths=../System/*.u
Paths=../Maps/*.ut2
Paths=../Textures/*.utx
Paths=../Sounds/*.uax
Paths=Sounds/*.uax
Paths=../Music/*.umx
Paths=../StaticMeshes/*.usx
Paths=../Animations/*.ukx
Paths=../Saves/*.uvx

View File

@@ -0,0 +1,6 @@
[ChaChaComboGib]
FriendlyName="ChaChaComboGib"
[ChaChaComboGibRiflePickup]
PickupMessage="You got the ChaCha ComboGib."

BIN
System/ChaChaComboGibv1a.u Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
Mutator=(ClassName=ChaChaComboGibv1a.ChaChaComboGib,GroupName=Arena,IconMaterialName=MutatorArt.nosym,FriendlyName=ChaChaComboGibv1a.ChaChaComboGib.FriendlyName,Description=ChaChaComboGibv1a.ChaChaComboGib.Description,FriendlyName=ChaChaComboGibv1a.ChaChaComboGib.FriendlyName,FallbackName="ChaChaComboGib",FallbackDesc="Instant-kill combat with modified Shock Rifles.")

Binary file not shown.