View Full Version : Development Journal > SiegeUltimate

03-07-2013, 10:00 PM
Destruction messages for Neutron bombs, EMP bombs and Warheads fixed to bypass PURE blocking.
Neutron Bomb won't trigger a destruction message on explosion.

03-07-2013, 10:15 PM
Middle item spawner now attaches the spawned item to the InventorySpot navigation marker.
This will tell bots to go and retrieve the item.

03-07-2013, 10:33 PM
sgItem > (all buildable items and weapons)
Optimized player detection when owner still present, avoids running a RadiusActors search.
sgItems will remain impossible to pickup for 15 seconds (scaled down to 10 by server settings) after the owner leaves the game.
If owner reconnects as spectator, a 5 minute timer will kick in and once that timer is up, item is free to be picked by any player in the team.

03-07-2013, 10:57 PM
Force bUseTranslocator on all SiegeGI games to TRUE.
This option doesn't affect gameplay at all, but prevents translocator related navigation points from being nullified.

03-07-2013, 11:34 PM
sgBuilding now sub-implements SameTeamAs( int TeamNum), defined in StationaryPawn.
External packages can now check teams on sgBuildings without recurring to data accessing methods (GetPropertyText).
SetTeam( int NewTeam) also subdefined, it is the primary method to set the team number and color.

03-08-2013, 12:42 AM
Build and Remove messages on the F3 stat window are merged instead of repeating:

Scourge built a Mine
Scourge built a Mine
Scourge built a Mine

Scourge built a Mine x3

Same with remove messages.

03-08-2013, 05:55 PM
Fixed the RandomItemSpawner's config being stored in SiegeMLSG3_pre.ini instead of the actual release INI.

03-08-2013, 07:04 PM
Added untested function that mutates all weapons in use at map start.
Then compares if weapon was replaced and alters the SiegeGI, Suppliers and MidSpawner settings.

This way Siege can be setup with ZeroPing, NewNet, NaliWeapons or any other weapon mutator without having to edit the Siege INI.

03-08-2013, 08:58 PM
Infiltration announced globally.

Spy: gets to know what team did he/she just infiltrate.
Allies: get spy identity and team.
Target team: warned of their team's infiltration.
Other teams: infiltration notice doesn't indicate owner nor target team.

03-08-2013, 09:34 PM
Initiated tests.
10 likes and I release it?

I'll keep adding stuff if I can.

03-13-2013, 03:01 AM
Increased Supplier touch spam timer (for ru reduction) from a base of 2.5 to 3.4

03-13-2013, 03:31 AM
New classes

Weapon locker with instant supply, takes a 1/3 of the damage so it isn't as much of a leech target, still heals at normal rates so they should be harder to destroy.
Base re-touch timer is 40 seconds, 25 deducted on death. (Scaled down by 30% due to server speed settings)
Imports 4 new building models, plus an effect model.
Cannot be built within 100 units of distance to another of these (player height is 76).

Supplier component, is a chained list of components serverside, containing each supplier's individual re-touch timer for each supplied player.
Used for rendering the supplier's availability on the local client.
If timer expires and player is touching the supplier, enforces a new supply without need of going out and in again.

03-13-2013, 12:48 PM
New Class

To be used as chained list of player positions.

03-13-2013, 01:12 PM
Extended functionality of SiegeGI's GivePlayerWeapon so that the weapon is returned in said function, this function will not only be used on the respawn instances, but also by the XC_SupplierBase.
Imported a sound file.

03-13-2013, 05:11 PM
New class

Displays the weapon being supplied by one of the new suppliers, its looks will indicate whether the supplier is active for this player, or still counting down.

03-13-2013, 06:23 PM
Fixed bUseRemoveGuardian variable on SiegeGI, now it's configurable, thus bringing the RemoveGuardian back if enabled.

03-14-2013, 06:44 PM
Milestone for RC19

Lag compensation (currently implemented on the Siege IG Rifle).
It's some sort of mix of ZeroPing and NewNet, will be tested in order to find bugs and exploits and patch them.

Zeroping styled target selection.
Serverside positional check (if the hit is too far from the player's lag trail, discard)
Old positions trail checking is done via interpolation and orthogonal projections, so it runs at any tickrate.

03-15-2013, 02:49 PM
Lag compensation features:
- Punish speed hackers by not allowing them to shoot.
- Punish FWS users by making them wait a couple of seconds before shooting.
- FWS shots are visible to others.
- Target selection Hash function calls a useless Trace, does nothing in game, but triggers an ACE kick if done externally.
- Player collisions disabled if client misses on his/her side, so no ghost hits.

03-15-2013, 03:06 PM
Fixed on the IG shock beam what seemed to be a mistake, when spawning the contiguous shock effects (spawned the old IG ones)

And the beam ended up like this:

Keep it or not keep it?

03-16-2013, 10:23 AM
the beam was meant to be like that.... not the normal ig one

03-16-2013, 01:23 PM
The lag compensation feature on RC19 gave unexpected errors on PUG server, things that didn't happen on my UT.
All I can think of is the game version (436 vs 451) and the behaviour of divisions by zero.

(Yeah, I should have added checks against that).
That should be the only fix needed to make the version ready to go.

SAM, do I pull a normal release (obfuscated LC and access code) or a fully obfuscated package without access code?

03-16-2013, 01:25 PM
obfuscated LC and access code. I'll discuss with you public version requirements

03-16-2013, 02:41 PM
Added subclasses of XC_SupplierBase

Type - Build cost - Base Upgrade cost - Number of weapons - % ammo level 0 - % ammo level 5
Basic - 150 - 20 - 2w - 10% - 24%
Extended - 400 - 35 - 3w - 14% - 32%
Advanced - 700 - 50 - 4w - 16% - 40%
Super - 2000 - 0 (no upgrade) - 1w - 200%

Preset suppliers:
Hyper - 2200 - 0 (no upgrade) - 1w - 100% > Hyper Leecher
Ape - 3500 - 200 - 1w - 40% - 70% > Ape cannon
Pulse - 3500 - 300 - 1w - 20% - 40% > Pulse rifle
Insta - 5000 - 500 - 1w - 2% - 12% > Instagib rifle (1 + 1*level ammo)

Still no mechanism on adding weapons to empty suppliers.

03-17-2013, 03:45 PM
RC19fix is ready, gonna send it.

04-19-2013, 05:47 PM
Changes below are post RC19.

Instagib getting stuck after a successful kill fixed. (forgot to play the fire animation on the server).

04-19-2013, 08:47 PM
Removed old code causing the creation of useless smoke generators on the Dedicated Server.
Added a sanity check to prevent crashes if a building is deleted at the same time it's created.

04-22-2013, 02:15 AM
Fixed SiegeInstagibRifle and Constructor GUI broken due to PURE's gay view rotation protection (theoretically).

Finished writing my custom package obfuscator.

05-02-2013, 02:44 AM
Fixed massive slowdown issue and excessive disk usage operations caused by the constructor when using sweeping functions. (it was setting binds and saving the config on every frame, per constructor)

05-02-2013, 11:11 PM
Minigun uses full serverside lag compensation system.

05-04-2013, 12:02 AM
Corrected SiegeInstagibRifle client ZP shot effect offset (was firing left hander all the time).

05-04-2013, 02:09 AM
ASMD Pulse Rifle uses now full serverside lag compensation system.

Since it hasn't been tested throughly, the simulated latency hasn't been entirely tweaked, so expect a few bounced hits (try aiming a bit forward of backwards).
Combos are also compensated using previous positions of the shock ball.

The player's own shock ball doesn't have any kind of lag compensation, so it won't appear right away.
Meaning, own combos will behave like ZP ones instead of NN ones (until I devise a cleaner solution, NN one is horribly complex).

05-04-2013, 02:37 PM
The Gel spawned by Hyper Leecher and BioBomb does 20% extra damage to buildings, 100% extra to explosives (RC, mortars, biobomb)
HyperLeecher can charge up to twice as much with ALT fire, with 25% extra speed.

:applause::applause::applause::applause::applause: :applause::applause::applause::applause::applause: :smile-new:

05-04-2013, 05:35 PM
Fixed a rare infinite loop that caused crashes during lag compensation (this problem is present on RC19fix).
Mod should be stable now.

RC20 upcoming.

05-05-2013, 04:40 PM
Fixed strange bug where a player would harm himself with a lag compensated minigun.

05-05-2013, 05:42 PM
Corrected design flaw causing Bots or Monsters that pick up a previously used lag compensated weapon to compensate for the old player's lag.

05-05-2013, 07:07 PM
ACE no longer kicks players using Miniguns and Pulse Rifles (i should submit this bug to anth).
Pulse Rifle no longer log spams the client.

05-06-2013, 01:08 AM
Fixed the Minigun and Pulse Rifle client crashes.
SAM, sorry for having you update so many times, hope everything's fine this time.

05-21-2013, 02:30 PM
Fixed RC20fix3's lag compensator actors not becoming non-solid after the shot was processed, causing strange suicides.
(Since Betrayal uses the same LC method, it's far easier to debug now)

05-21-2013, 02:41 PM
Applied SC anti telefrag
Based on Crsk 's method.

Still won't prevent teleported players from waking inside of it via translocator.

06-06-2013, 03:39 AM
Applied the Supplier queue and rotation, rotation timer not determined yet.

06-06-2013, 04:04 PM
Super Containers will now block/unblock navigation points passing thru them.
This will prevent AI creatures from attempting to use a blocked path.

06-06-2013, 04:20 PM
Created class sgBotController.
The SiegeGI game class spawns one of these per team with each core, it will be used to give directives to AI creatures that support it.

06-10-2013, 12:35 PM
Grenade launcher finished, can alternate between various ammo types:
Rocket grenades (48 max, shared with rocket launcher)
EMP (15 max)
Napalm (15 max)
Toxic (20 max)
Fragmentation (30 max)

Added 4 new weapon buildables:
EMP Launcher - 500 RU
Napalm Launcher - 800 RU
Toxic Launcher - 600 RU
Fragmentation Launcher - 550 RU

Version auto-update system for sgCategoryInfo actor will detect previous version in use (starting with RC20) and will add any new buildings without need of user input.
In this case, the 4 launchers are automatically added and saved into the sgCategoryInfo config.

06-11-2013, 11:54 PM
Ape Cannon replaced from mid spawn with fully loaded Grenade Launcher.
Ape Cannon is now buildable for 550 RU.

Increased Toxic and Fragmentation prices to 700 and 650 respectively.

06-12-2013, 12:13 AM
All buildable items with upgrade cost = 0 are now N/A, and not upgradeable. Prevents score inflation.
Leecher and Pulse rifle will now display proper ammo count when built and picked up.

06-12-2013, 02:21 PM
RC21 tests to be started

06-13-2013, 03:10 PM
ShakeView added to Instagib rifle, should work fine on PURE games (?)

06-27-2013, 05:24 PM
Created a utilitary class that will contain lots of static and shared functions (like FerBotZ's function manager).
The goal is to reduce code lines.

06-27-2013, 08:24 PM
Deprecated DMMutator as SiegeGI's BaseMutator, this should count as optimization.
Made a much lighter SiegeMutator that does far less unnecessary checks, also allows Unreal 1 weapons into the game (weapon fire on these not yet fixed, maybe never since we're not using them anyways right?... right?).
Idea from: UT99.org | UT2U1 - Loathsomes UT Tweak - RC4 : Mutators (http://www.ut99.org/viewtopic.php?f=7&t=4872)

06-27-2013, 11:36 PM
Created an external util capable of calling UTPure's and GlobalUnreal's function to get a player's protected view rotation without generating package dependancy.
Said util is merged into the main package when compiled and used by the lag compensated weapons.

That should take care of ZP shots going nowhere near your crosshair.

06-28-2013, 03:45 AM
Package name convention changed > SiegeIV_0001 (and so on with each 'build').
Game name will be 4th Generation Siege, most of it's changes will go back to the coding foundation itself, with lots of new/original structures (I count the RC15 constructor on those).
"Improve the foundation, build even taller structures"
A private roadmap has been established as well.

Modified ZP side of the lag compensation engine, it is now entirely de-obfuscated and it will include more serverside redundant checks.
EDIT: The ZP side will also hit all kinds of actors, not just pawns or players.
Access code removed, all releases will be classified as stable/public releases.

Created class named IntFileWriter.
It will be used to write Siege info and settings in localization files (.INT to english .UT clients, .DET to german ones, .EST to spanish, etc)

This file writer will be used as basis for automatic self-localization, this would essentially become the first UT mode to autogenerate it's localized descriptor files from within a cached download.
It will also be used to create various config INT files (not INI) with settings that will be manually parsed, making it version independant.

In other words, most of the settings of a 4th Gen Siege build will not need to be setup again with a version change.

06-28-2013, 10:45 PM
Created zp_SniperRifle.
ZeroPing binds will select it and it uses Siege's LC core (ZP v2), it can select any Pawn or Projectile as client target (except sgBuildings, because they tend to disappear on clients).
On the case of nukes, it will do ZP hit mode if visible on client, and it will do classic hit mode if not visible on client.

This means, you can shoot down nukes by directly aiming at them, or by shooting it down before it spawns on your client (classic mode), this is done like this because suiciders aim at very close targets, and that would make high pingers unable to shoot them down otherwise.

06-29-2013, 02:13 AM
Basic client settings (adjustable by constructor GUI) are now stored in:
SiegeClient.ini > config is autoloaded normally, it is saved using a method that clears out unneeded entries like older version ones.
SiegeClient.[your locale, ex: INT] > this one is version persistant, when the main INI entries are missing, this file copies it's configs to the new version.

06-29-2013, 08:11 PM
Created zp_ShockRifle using the ZPv2 core from Siege.
Fixed ZP headshot bug on ducking players for good.

06-30-2013, 04:47 AM
Asmd Pulse rifle double beam display fixed.
Server log spam when a player has speed+jetpack fixed.
Suppliers: Weapon classes without package always return the current siege package (EX: "sgPulseGun" loads SiegeIV_0001.sgPulseGun), makes it easier to setup between versions.

All HUD Inventory finding routines unified into an optimized special cache, the design makes it easier to detect loads of items for status drawing with a single loop. Render time variance (my PC) = -0.15 milliseconds.
These items are now cached but not yet displayed:
- Acoustic Dampener
- Rubber Suit
- Metal Suit
- Spy Suit
- Toxin Suit
- Asbestos Suit
- Telenetwork

06-30-2013, 04:56 PM
sgEnforcer now uses LCv2 Lag Compensation system.
All client animations in sgEnforcer play correctly when switching between primary and alt fire.

ZeroPing will be officially deprecated.

06-30-2013, 07:04 PM
Nice work with the sniper rifle now I can have some real fun :D

07-02-2013, 12:24 PM
Excited at the next beta release! Pub release incoming !!

07-08-2013, 04:57 PM
Fixed crash with the native Botz packages, now siege will start with native Botz.
sgTeleporters will create 2 linked navigation points between them via native FerBotz, enabling Bots and Botz to use said teleporters to reach destinations.

07-08-2013, 08:04 PM
sgRURecovery entirely rewritten using queuer actors.
The amount of recovery data is unlimited and it recovers all of a player's stats.

07-11-2013, 12:33 AM
Pseudo object archetype system researched, maps can now have their own .INI files to define game rules and even recommended building locations for each team.

-> Usage of AI queuers, these will hold AI infor for every Bot and Player that wishes to register himself as AI, it is planned for the AI queuer to tell the bots and players what to do.
This should work in a similar fashion to UT3's player guiding system for the Warfare mod.

07-12-2013, 07:44 PM
Created class sgBuildingMap.
SiegeGI creates these during InitGame before Core placement.
This 'object' can store up to 32 (expandable?) building location strings. Can parse into and from each different map INI file.
Creates the build markers (sg_BOT_BuildingBase) required for AI building.

Created class sg_BOT_BuildingBase.
Building location marker, can directly interact with bots and tell them to build at the specified location.

--- Updated ---

Example in Kanjar:


07-14-2013, 07:38 PM
Registers all non-playerpawns in team as AI players.
Stage ZERO state: AI players go gather RU, select the best candidate to build the supplier and upgrade him on his way. Can also upgrade the core.

Works with Siege AI player tasking.

07-15-2013, 02:50 PM
Fixed invisible HUD + kick + constructor log spam on PURE games due to retarded own PRI protection.

07-16-2013, 08:31 PM
Added option GameProfile=(name), easily customizable via mapvote.

Per-team category info and build rules done, these load the category rules from (name).ini
Category rules are runtime checkers that will determine whether a team is able to build something or not.
Sample of OldSiege.ini

Rule[0]=RULE(SupplierFirst?class=sgSupplier?finished?leve l=5?onceonly)
Rule[12]=CATEGORY=Special Items

07-23-2013, 04:17 PM
Replaced RandomItemSpawner with WeightedItemSpawner:
- Weight increment per spawn.
- Weight caps per item (both minimum and maximum)
- Adjustable to either game clock or real clock.
- Customizable via the (GameProfile).ini file.

INI section of my CacusTech profile (has 49 building rules lol)

Added UTPure's HUD clock.
Acoustic dampener can be built (default 150 RU)
Acoustic dampener simulated clientside via HUD hack (no item replacement).
TeamRU displays all teammates now, enabling/disabling has no delay for high pingers.

07-24-2013, 12:49 AM
Excepting the Jetpack and Speed icons, i'll be replacing/adding these newly designed ones.
Still gotta fix the numbers.

08-03-2013, 01:05 PM
Guardian has been finally adapted to the new Siege, (hadn't been updated since xxl2g, no skins or anything) and optimized.
It also pulls players in by a little, it actually disrupts the movement a bit more than pulling, very useful to make players with high momentum step into a trap-mine behind the guardian.

The weighted item spawner can also affect it's spawned item's properties, in theory, this makes it possible to spawn 2 or more variations of the same item class.

No need to shoot your weapon to figure out which one it is.

08-03-2013, 02:10 PM
Grenade launcher display more compact and with better color differences.
HUD score display is downscaled using sqrt() formula, making it low-res friendly.
Both GL and HUD right side of the viewport are now scaled using vertical (ClipY instead of ClipX) formula instead of horizontal one (like the status icon), this makes the HUD more wide-screen friendly.


08-03-2013, 07:25 PM
- Cores are temporarily disabled before game starts, this should prevent players from gaining RU during the spectator phase.
- Found that each core was running the RU assignment iterations on clients as well, without modifying RU at all.
Now the clientside cores do assign RU, if the local client is on the core's team (client optimization and RU increase simulation).
- Cores gain a small base boost in RU generation when the owner team is unpopulated, the RU boost gain is at max with 1 player, and becomes null with 10 or more players on the team.

- NetUpdateFrequency value changes tweaked from 50 > 30 on damaged builds and from 10 > 5 on non-damaged ones.
- bDisabledByEMP status var 'can' be replicated if the bReplicateEMP is set to TRUE.
Boosters, Antigravity Platforms and Cores replicate EMP status for precise lagless simulation.
- White particles during building come from all directions (broken in RC14).

- ZP headshot corrector 100% failsafe, adjusts it's own update to match the player's.
Net rate adjuster tools that reduce player update rates may also reduce CPU and bandwith usage on these correctors.

- Gas grenade cap increased from 15 to 20.
- Napalm hit damage reduced from 75 to 35.

- Heal radius is altered depending on the container size, normal containers are unaltered.
This helps changing the radius setting dynamically depending on how the game profile mods container size.
This change also allows ContainerX to heal a bit further away, due to being subclassed from sgContainer.
- Attempting to telefrag the normal Container will reduce the container's health by (2000 + 20% of current health) instead of instantly killing it.

Removed outdated classes:
- SiegeGI2
- SiegeGI_MLSG3
All Siege games will show up on the Siege browser tab.
- sgCategoryInfoMLSG3
- LeagueSuperContainer
- LeaguePoisonGuardian
- OldSiege

08-04-2013, 09:48 PM
Supplier Rotation timer is editable in category rules.
Profiles can also edit sgBaseCore settings like leech multiplier, RU generation multiplier and Upgrade Cost. (I can imagine a combo with super high upgrade cost and 3x generation multiplier)
Removed debug logs on server.

Gameplay tests concluded.

08-06-2013, 12:28 AM
0002 build:
Simplified Hashing function for ZP target selection, should fix unhittable player bug.
Fixed category info actor's multireplication, should fix the constructor categories randomly disappearing.
Deprecated RandomItemSpawner class.

08-11-2013, 03:57 PM
Tweaked the security tolerance for the lag compensation, shouldn't hurt players with packet loss as much as before, also works better for shooting while dodging and standing at a moving lift.

08-21-2013, 09:37 PM
Corrected upgrade issue that allows players to upgrade buildings 0.1 seconds before they finish building, potentially causing problems with certain builds.

08-22-2013, 06:56 PM
Implemented experimental jetpack push simulators that alter a player's physics in Client net play, this helps keeping the client PlayerPawn at it's real position in mid flight during high ping games (150ms and higher).
Side effect is small position shaking at pings 200 and higher, nothing annoying though.

08-24-2013, 12:30 AM
Created class sgPlatform.
Differences with existing WildcardsPlatform:
> Client version of the platform doesn't have a -8 Z unit offset, meaning, it's right where the client sees it, allowing precise firing from it.
> Collision hull is replicated to it's exact position, replicating the hull should correct shaking view when standing or jumping off the platform.
> Detection of piston damage, creates an impact jump effect on the player, impact damage is scaled down depending on platform level.

Created class sgGenericImpact.
To be used to allow players to see if the translocator module was hit immediately after being fired, before landing. (bug in base UT99)

Organized most invisible replicated siege classes into SiegeActor class tree, looks better in the editor.

08-30-2013, 01:13 AM
Minishield revamp.

Slightly bigger (explained in image).
You can shoot from inside minishield.
Spheric collision box matching visual, you now hit what you see.

09-01-2013, 04:13 PM
Grenade Launcher and Grenade models re-extracted using Unreal 227i Editor, models don't have broken polygons and filesize reduced in 100kb.

09-03-2013, 10:45 AM
Increased minimum ( XY, Z) distances between teleporters to prevent crash issues.

09-03-2013, 11:54 AM
Placing a teleporter too close (Z dist) to a sgPlatform won't cause the player to fall through the platform after teleporting in.

09-05-2013, 03:45 PM
Created a separate lag compensator channel.
This one will activate compensation on weapons automatically on both client and server if client has LC activated and will do proper code delaying to ensure shots happen after the player physics updates, also on both ends of the network.
It also has a double check routine for client LC activation/deactivation that won't fail due to packet loss.
The ZP hit signal code was moved from the weapons into this actor and unified.

> Packet loss doesn't prevent weapons from activating/deactivating LC.
> Less code on the weapons, single method for all of them.
> No log spam with "Received unwanted function xxxxx"
> Ensuring player physics is fully processed before applying shots reduces inconsistancies that cause unregistered shots.
> Super high pingers (400+) won't get unregistered first shot after drawing weapon.

Also, blood splash fixed on Containers (for real this time).

09-05-2013, 06:10 PM
If a translocator gets hit in mid air before landing it's real position will be replicated, as a result, fixing invisible translocator bugs as well.

09-06-2013, 06:14 PM
Platforms are now walkable.

09-06-2013, 08:06 PM
Experimental anti image dropping implemented, should fix nearly all image dropping cases.

09-07-2013, 03:41 PM
Booster's lagless simulation is 100% precise now.

09-08-2013, 05:42 PM
HeadShot and ImageDrop fixer not created for spectators anymore, fixed issues with this actor when playing on Listen Servers.

***Incredible! You are a GOD among Snipers!

Forever, I will remember your gift and gratitude ... Thank you.

Happy Aniversary! 1 Year of #CodeReview 2 Years of Chaos!

09-12-2013, 03:10 PM
Players with Shrinker suit are not only 40% their size, but also 40% their original weight. Momentum received by enemy weapons/projectiles affect them much more.

--- Updated ---

Building a platform right in the middle of a teleporter will revent players from using it as destination.

09-16-2013, 01:07 PM
0009 changes from now on.

Disabled image drop fixer due to unfixable engine issues dealing with collision checks.
Teleporters re-enable their collision after failing to bring a player in.
Teleporters won't allow a player to teleport in-and-out without leaving the teleporter's collision cylinder first.
Platforms client collision enforcers disabled to prevent client crashes.

09-16-2013, 02:11 PM
Animation issues after weapon switch should be fixed on *all* weapons.

09-18-2013, 01:57 PM
Containers no longer stay alive with negative %hp

09-18-2013, 02:38 PM
Fixed bug in lag compensator system that makes explosive barrels invulnerable.
sgTeleporter corrects player rotation if teleported aiming at a wall.
sgTeleporter prevents players from getting stuck using Duck.

09-19-2013, 06:32 PM
0010 changes from here on.

Nukes shouldn't give multiple rewards if hit multiple times in the same frame.

09-20-2013, 02:21 PM
Lag Compensator's reliability greatly increased.
It is now possible to see enemy player's health in UTPure servers.

09-23-2013, 05:25 PM
Changes for 0011 and on

ScoreBoard optimized, should work on demos with UTPure, better size adjustment based on resolution and shows more players than 9 (2 teams) or 5 (4 teams).
Image Drop fixer rewritten.

09-29-2013, 01:11 PM
Lag Compensator should be able to work on imagedropping players.
RU Recovery resets RU to zero on players that left if their previous team was defeated (4way and 1v1 round mode).
Siege automatically enforces the setting that makes weapons respawn instead of stay.

10-02-2013, 08:30 PM
Players that ping 350 or more can combo their own shock balls before these spawn clientside. (Shock and ASMD)

01-22-2014, 07:25 PM
Release 12 (public)
- LC separated into it's own project, all LC code removed from trunk.
- Suppliers can now do exact class matches or subclass matches (makes super easy to setup mutated weapons, but supplies Ape Cannon if present on the game).
- Grenade Launcher can be setup to spawn with only 3 ammo types (1 full catridge, remaining 2 have random ammo).
- Moved all Post-Build Timer based functions on sgBuildings into a separate function.

01-22-2014, 07:39 PM
Release 13 (private)
-> Test Logging removed on ImageDropper fixer.
-> Teleporters always do 100% lag compensated teleportation, except for telenetwork cases, client crashing completely fixed.
-> Created EDIT-MODE, it's loaded as EditSiegeGI and contains a fixed category info class.
-> Created sgEditBuilding class, it's variants will be used for marking construction points in map that can be saved later during EDIT-MODE
-> EDIT-MODE spawns the sgEditBuilding variants on each loaded marker at map start.
-> Project system for choosing what to build next, a building is sent by a marker to the AI Hivemind as a project and then the bot controller ensures the conditions are met for said project to be built.
-> The game class keeps track of the max possible RU capacity the entire existing containers can provide to each team, letting the bot controller know when projects can be built by simply upgrading existing Containers.
-> AI Hivemind now handles construction of Containers in a separate thread (from projects), and even takes into account each Container variation the category info profile has, weaker containers may be replaced by the AI team by stronger ones if rules allow bots to do so.
-> Projects are multiversion as well, a weaker version of a building may be replaced by stronger versions when the team gains the ability to do so.
-> AI Hivemind will send bots to upgrade the one in charge of building.
-> Bots now have the ability to remove buildings, used when replacing buildings in the same location.
-> The entire build system is flexible to the point it takes into account multiple versions of even the same building class and tries to choose the best affordable ones as projects/containers.

Current way of accessing edit mode: MUTATE EDITMODE
*1 - On server, read only, requires admin.
*2 - On local game, can save markers using SAVEBUILDMAPS command.

Currently existing markers:
- Container point
- Supplier point
- Protector point

04-09-2014, 04:46 PM
Changes from 0014 and on.

Alternative RU reward system per kill.
Can be enabled in SiegeGI's bEffBasedRUKill and RU reward will work like this:
- Suicide => -50 RU, -1 to spree counter.
- Kill => 20 + Enemy Eff/2 + Enemy Spree * 5. Enemy spree reset to 0.
- Team Kill => Same as above, but negative, spree not reset.

This mode encourages killing campers and high spree players while reduces the RU generated from killing walking leeches, aka noobs.
- 30% eff, 2 kills = 45 RU.
- 80% eff, 15 kills = 135 RU.

- If a kill happens to be considered a 'supplier kill' spree count increases by 3 instead of 1, making the RU reward on said player higher.
- Players victim of kills classified as 'supplier kill' will not lose 10 RU.

04-09-2014, 06:56 PM
Im sorry but thats just a plain dumb idea to have a reward for killing a player thats on a spree. Not just talking for myself only here but Im gonna make an example of myself/chis who for one already have enough targets on our backs we dont need even more to the point where people are chasing for said ru reward. I hope it doesnt get enabled cause all it will promote is mindless asschasing and we have enough of that at the insta and combo servers to last a lifetime.

04-14-2014, 03:11 AM
Cleaned up the horrors in Jetpack's toggling code, should be a lot more responsive.
Jetpack now supports ExtendedClientMove plugin for clientside simulation of the jetpack's push, displaying the player at his/hear real altitude and with almost smooth movement.

Beta plugin that extends a client player's movement update so that it also takes into account velocity changing events other than Jumps and Movement axes, causing more accurate simulation of the player's location in high latency games.

The default player's movement commands are stored for both replication and validation, when a movement command becomes older than the player's position in the server, it is discarded.
When a movement command is generated it's sent to server so it's applied there as well, and it gets stored for a while just in case the server decides to rectify the player's position.
When the server triggers a player position rectification (every 2 or so frames in normal games or when position inconsistencies occur in NewNet), the server sends the player his current location. When the player receives that location (with it's corresponding delay), it will apply the stored movement's axes to it, moving ahead in time again.
Problem is, that if something causes the player to change his velocity (non-colliding triggers), said velocity change doesn't get simulated during position rectification and the player will visibly teleport short distances from his perspective (lagged super booster effect).
The most recent velocity changes are stored with a timestamp just like player's movement commands and processed along them with this plugin in order to keep movement smoother and more consistant to what happens on the server and what other players see.
This also indirectly helps LCWeapons with it's positional validations avoiding rejected hits.

04-14-2014, 03:19 PM
Scoreboard will draw a team's custom name instead of the team color (when there is one), only spectators logged as admin may change team names using TeamName command. (TEAMNAME TEAM NAME)
Fixed weird player movement when jumping off a platform.
Antigravity platform now supports ExtendedClientMove.

04-15-2014, 08:35 PM
Buildings now internally keep track of all the RU invested on them, as well as the RU leeched from enemies.
Building removal RU return rescaled to give a percentage of the RU invested, % goes 40 (no health) to 80 (full health).
Building visuals get replicated to clients if they change.
sgItem reworked for better mutator compatibility, multiple items, and combined visuals with the main item to give.
Cleaned up sgBaseCore code.
sgItemShielbelt's collision reduced to match it's visual.

A preview of the new visual:

04-16-2014, 07:39 PM
Jetpack can now be replaced by Super Jetpack without suiciding.
Scoreboard brightness can be adjusted using the constructor GUI, useful for screenshots.


04-17-2014, 10:49 AM
lol at the blaze is noob teamname :ape:

04-21-2014, 04:58 PM
Buildings can now be insta-built if the Siege profile allows it.
Log warnings removed at map start and dying with spawn protection on.
SCUBAGear will only auto-activate if picked up under water.
Fixed error in velocity alteration in clientside jetpacks.

Released as 0014.

10-23-2014, 04:50 AM
Changes for 0015 from here

Bindless Jetpack implemented:
- No longer alters jump bind.
- Requires Walk or Duck bind to fly instead (works with all default bindsets).
- Holding Walk = normal flight.
- Holding Duck = hover flight (no altitude is gained).
- No longer uses states.
- Code greatly simplified, works on all Pawns now (theoretically Botz can use it if they alter bRun or bDuck on themselves).
- Holding Walk or Duck before jumping or coming out of water immediatly turns on the jetpack.
- Since activation is read from the player's Input instead of a replicated bind, there is better client/server sincronization.
- Client no longer has authority on activation/deactivation, meaning that players with over 300 ping won't have problems activating it.
- Jetpack no longer writes data into UnrealTournament.ini (both client and server).

11-09-2014, 06:00 PM
Jetpack no longer uses EXM plugin.
- Lagless simulation of flight 99% accurate and in the same page as client <-> server updates without extra mods.

HUD timer now uses the same digital numbers as armor and health, credits to ~V~

JetTrail code cleanup.

12-02-2014, 02:56 AM
Protectors reworked.

- Projectiles are held in memory instead of new ones being created, that solves huge waiting times during map switches after long games and reduces both server and client memory usage.
--- Server version of projectiles won't spawn impact effects anymore (unless listen server).
--- The replication buffer is a 32 element array with: Location, Compressed rotation, Projectile ID.

- Projectiles are now simulated from the buffer instead or replicated.
--- Simulated hit sound.
--- Projectiles won't appear to go through enemy buildings (now it shows the real serverside behaviour)

- Projectiles's velocity will be affected properly when going in and out of water.
- Projectiles won't spawn bubbles after leaving water.
- Projectiles' aim error formula changed to a wider cone, but with more chance for well centered shots.
--- 360 is 65536 in UT. >> From Rand(-100,100) to Rand(-300,300) * FRand(0,1)

12-02-2014, 05:36 PM
Jetpack displays usage instructions after jumping once with it.
Super Protector projectile's hit effects are also kept for multiple uses.
Containers no longer attempt to remove enemy buildings about to be destroyed from their heal list, should fix a very rare >10million iteration crash.

Released as 0015

01-02-2015, 09:16 PM
0016 changes from now on.

Jetpack: fixed bug causing jet trail not to disappear after player is killed during flight.
Super Protector: projectiles' colors shouldn't be red on other team's SP's.

Removing unfinished buildings now return a higher amount of RU (it was erroneously giving ~45%).
- Old scale:
-- Invested RU * (0.4 + 0.4 * BuildHP%) = 40% to 80%
- New scale (for unfinished builds, uses old for finished):
-- Invested RU * (0.4 + 0.4 * BuildHP% + 0.6 * (100-BuildHP%)) = 100% to 80% (non-damaged builds during constructions)

01-04-2015, 04:25 PM
Mines and SuperMines won't detonate on players that still have over 2 seconds of spawn protection.
- (Timers scaled down by game speed).
- (Detonation by other sources will still kill a player under spawn protection).

01-04-2015, 06:49 PM
- Fixed bug in sgBaseCore where the RU/second factor may temporarily increase on Supplier spam kill events.
- sgBaseCore now has global RU award.
--- Teams upon receiving a specific RU award receive said RU distributed among players that aren't maxed out.
----- (Just like RU denial prevents core from giving RU, award makes players receive it at 200% rate)
- RU not given to team by Core in case of Supplier spam kill rescaled from [50] to [Team Size * 5 * Core Level].
--- (Early game sup spam denies around 20 RU, late game spam denies around 200 RU).
--- (Since said amount is distributed among all players, high player count games were seeing little to no effect from this)

- Added SharedReward function to SiegeGI.
--- When a Shared Reward is issued, it will first attempt to give said RU to the target player.
--- If the player is gone, in a different team, or maxed out of RU. Said reward is handed to the Core as a global RU award.
------ (If player has RU=200, MaxRU=400 and award is 400: )
------ (Player gets 200 RU, core gets the remaining 200 to distribute among team)

- Mines now are variable based and can be customized, SuperMine code removed and instead changed variables.
--- Mine:
--------- MaxEnergy=2000
--------- DetRadius=75 //Detection radius and base explosion radius
--------- ExpRadiusLevel=25 //Additional explosion radius per level
--------- SelfDamageDet=4000 //Remove energy after explosion
--------- RULevelMult=4 //Additional RU given per damage instance scaler
--- SuperMine:
--------- MaxEnergy=1000
--------- DetRadius=100
--------- ExpRadiusLevel=35
--------- SelfDamageDet=200
--------- RULevelMult=2
- Fixed accessed none warnings for cases where mines detonate on monsters.
- Mine reward changed from AddRU to SharedReward.
--- Mines where there's no owner, or owner was teamswitched will now give RU to the owner team.
- Mines add +1 to score per kill.
- Mines add +3/+6 to score when victim has nuke(s).

- Upgrading a Super Supplier to level 5 causes nearby Suppliers to be removable by anyone on the team.

- Building removal RU is now returned as a Shared Reward.
- Building RU return is applied after the building's Destruct() function.
--- Removing a SC will cause all players in team to eventually receive the RU instead of losing it.

01-06-2015, 09:12 AM
Mines and SuperMines won't detonate on players that still have over 2 seconds of spawn protection.

lets just say a person thats spawn protected lands on a super mine will the mine die? because that player is spawn protected?

(pretty much like doing god mode and landing on a mine it will just constantly try to detonate and eventually die because of the health decrease on the mine each detonate?)

01-06-2015, 10:51 AM
Mines won't detonate at all, so no self-damage.
Spawn protected players can still die if someone else detonates the mines.

Will be releasing as 0016.

01-27-2015, 02:01 PM
0017 changes from now.

- Platforms can no longer be built touching teleporters.
- Added to constructor GUI settings a 'High Performance' option, it affects client's behaviour in the following ways:
--- RU increase by core not simulated on all of player's team.
--- Smoke generators for buildings on fire spawn particles at nearly a third it's rate.
--- Electrified or burning buildings don't emit light.

01-29-2015, 11:22 PM
Rocket cannon build distance reduced from 20 to 16.

Extra high performance mode adjustments:
- Napalm grenades produce less particles.
- RU crystals don't emit light.
- Siege animated sprites last half as much (they animate twice as fast).
- Jetpack fire particles have an extra 0.2 second added to the spawn interval.

02-18-2015, 08:45 PM
Prerelease 0017 changes

================================================== =======
Internal changes:

Removed old path blocking system from Super Container

Created path blocker object, does advanced handling of reachspecs when solid buildings block them.
Added flag 'bBlocksPath' to sgBuilding
- The path blocker is attached to buildings with bBlocksPath flag
- It will perform a slow path query (takes a few frames to finish blocking)
- The blocker object can hold up to 32 removed reachspecs
- The reachspecs are restored when the building is destroyed
- Block is polled again for nearby buildings upon restoration
- Buildings with bBlocksPath flag on:
-- sgContainer
-- sgContainerX
-- WildcardsSuperContainer
-- sgPlatform
-- XC_AntigravityPlatform

Edit mode building markers have a 1 second build time now.

Removed deprecated Building flag 'bCanRemoveOwnTeam'

Optimized nuke blast wave code.

Fixed log warnings when player gets spawn protection with an impact hammer or chainsaw.

Fixed bug causing sgBooster to be able to boost during construction, before the first Timer event.
OPT: Moved sgBooster's self-repair timer from Tick() into CompleteBuilding() event.
OPT: Moved sgBooster's self-repair from Timer() into CompleteBuilding() event.
Removed sgBooster's Tick and Timer events.
- Booster's repair is now sincronized to the sgBuiding's 0.1 engine-second timers.
- Repairs 180 energy per second.

================================================== =======
Gameplay changes:

Mines now fully visible for own team.

Added 'OvertimeTimeScale' to item spawner rules, it will scale up or down the spawn timers for overtime.

Nuke Blast wave affects all projectiles instead of just other nukes.

Widened antigravity platform's push cylinder.
Antigravity platform now simulates clientside gravity effect at high pings.
Antigravity platform now contains a 10 engine-seconds self-repair timer (without taking damage).
- Repairs 100 energy per second.

Door Jammer (new):
Build a door jammer near a door or on a lift and force it to stay open.
The jammer must be attached to a surface.
- Build Cost: 175 RU
- Max Energy: 1000
- Takes 300% burn damage.
- Takes 66% protector damage.
- Low visibility
- Cannot be upgraded
- Build time: 4 seconds

Added "Wildcards" prefix to SelectBuild bind classes, now the following inputs are valid:
- SelectBuild SuperContainer (selects WildcardsSuperContainer)
- SelectBuild Container (selects sgContainer)
- SelectBuild DoorJammer (selects XC_DoorJammer)

================================================== =======
== Nuke Launcher:
Fire offset changed from (18,0,-10) to (10,0,-8)
- Nuke spawns closer to the player's view.
- Should prevent most vanishing nukes bugs.
- Should also prevent most firing nukes through walls bugs.

== Grenade Launcher:
Has an additional mid spawn parameter (22)
- Adds 0-50 % ammo amount to a random grenade type except napalm.
- Addition occurs twice, and may happen on the same ammo type.

== Hyper Leecher:
Build time from 10 to 4.
Damage reduction to item (before picked up) from 50% to 67%.
Default cost from 350 to 301.

Changed some other default build costs:
- Ape Cannon: 550 to 750
- ASMD Pulse Rifle: 800 to 750
- Dampener: 150 to 125

================================================== =======
Changes to default SiegePub profile:

- OvertimeTimeScale factor for item spawner set to 0.85
- ContainerX initial MaxEnergy changed from 5500 to 3750 (Container has 2000)
- ContainerX limit set to 4
- Super Protector limit set to 8
- Removed EMP launcher from build list
- Added Protector to build list with cost 125 (default 100)
- Added AntiGravity platform to build list.
- Added Utility category
- Grenade Launcher takes 20 spawns instead of 15 before being available via mid spawner.
- Grenade Launcher appears with the (22) ammo distribution variant now.
-- (20) Full Ammo
-- (21) Full Ammo for 1 type, random for other 3
-- (22) Random (0-50%) ammo for 1 type except napalm, rolled twice.
- Ape Cannon no longer stops spawning, takes 8 spawns instead of 4 before being available via mid spawner.
- Mid Damage Amplifier lasts 40 seconds (was 30)

0017 SiegePub Category distribution:

[CatIdx - BuildIdx - BuildName - Conditions]
For use with binds
- SetMode CatIdx BuildIdx
- SelectMode CatIdx BuildIdx (switches to constructor)
- SelectBuild BuildName

--- Fortification
4 - 0 - Container
4 - 1 - ContainerX
4 - 2 - SuperContainer
4 - 3 - Protector
4 - 4 - SProtector
4 - 5 - Guardian
4 - 6 - PoisonGuardian
4 - 7 - MiniShield
4 - 8 - ForceField

--- Supply
5 - 0 - Supplier
5 - 1 - SupplierXXL
5 - 2 - HealthPod
5 - 3 - HealthPodXXL

--- Special Items
6 - 0 - ItemShieldBelt
6 - 1 - ItemJumpBoots
6 - 2 - ItemSpeed
6 - 3 - ItemInvisibility
6 - 4 - ItemDamageAmp
6 - 5 - ItemDampener

--- Utility
7 - 0 - Booster
7 - 1 - SuperBooster
7 - 2 - Platform
7 - 3 - AntigravityPlatform
7 - 4 - DoorJammer

--- Weapons
8 - 0 - ItemLeecher
8 - 1 - ItemApe
8 - 2 - ItemAsmd
8 - 3 - Warhead
8 - 4 - IWarhead

--- Teleportation
9 - 0 - Teleporter
9 - 1 - ItemTelenetwork
9 - 2 - ItemTranslocator

--- Explosives
10 - 0 - Mine
10 - 1 - SuperMine
10 - 2 - ExpRocketCannon
10 - 3 - ExpMortarBomb
10 - 4 - ExpBioBomb

--- Suits
11 - 0 - ItemJetpack
11 - 1 - ItemSuperJetpack
11 - 2 - ItemToxinSuit
11 - 3 - ItemLavaSuit
11 - 4 - ItemScuba

03-28-2015, 01:14 AM
Prerelease 0018 changes:

XC_GameEngine detection at map start (server).
Replaced path blocker objects with dynamic arrays, these are only operable in XC_GE mode. [Disabled feature]
OPT: Protectors processing event moved from Timer() to CompleteBuilding(), runs serverside only.
Poison Guardian attack rules now use Guardian ones as base, then apply toxin suit detection.
OPT: Simplified loop code on both Guardian classes.
OPT: Guardians processing event moved from Timer() to CompleteBuilding(), runs serverside only.

Fixed sgItems giving deleted items to players when built under the lava, this fixes the visible belt effect issue as well.
Adjusted mid item spawn location for map CTF-'uK-BraveHeart[REVISED] to the center of the stonehenge.
Guardian attack particle directions are now randomized.

SetJetpack bind restored, forces the Walk button on the client to make spacebar have a similar effect to that of pre-0015 jetpacks.
Jetpack hover mode Z thrust adjusted:
- Keeps the player closer to the original Z coordinate.
- Fuel consumption during hover reduced to half.

Changed attack rules for Guardian and Protector to discard hidden Pawns, consider monster's Team if possible.
- Should fix players that die from teamswitching from drawing fire towards them.
Guardians have an extra 5 unit radius by Level 5 (1 per level).
Rescaled attack change from Guardian to match that of Poison Guardian (now level 0 guardian can attack).

08-10-2015, 01:23 AM
0019 changes from this post and on:

- Used different formula for Eff based RU per kills (based on Adrian's feedback)
35 + Eff/4 + SpreeKillCount^1.4
* Value is doubled if victim has over 90 eff
--- 40 Eff, 1 SKC: [45 + 1] RU
--- 50 Eff, 3 SKC: [47 + 5] RU
--- 70 Eff, 25 SKC: [53 + 90] RU
--- 91 Eff, 10 SKC: 2x[58 + 25] RU
SKC increases by 1 per kill, suicides don't reset (simply -1)
Other SKC increases:
- Picking up a mid item +4.
- Supplier spam kill +3
- Building a mine +2
- Picking up a built item +1

Enforcer ammo count on respawn changed from: [15 + 3 * Core_Level] to [15 + 8 * Core_Level]
- Max enforcer ammo effectively goes from 30 to 55

Added bCore5AddsEnforcer option (default=true), if true newly spawned players get a second enforcer if core is level 5.
Added bPlayersRelevant option (default=false), now players only have bAlwaysRelevant set if this option is enabled.

sgBuilding now stores and replicates the owner player's sgPRI, this removes the need of having players use bAlwaysRelevant to see the build's owner.

MiniShield changes:
- Price from 700 to 800
- Max health from 16000 to 15000
- Damage types 'Jolted', 'Shot', 'Shredded' do extra 0%-100% damage based on hit angle.
-- Basically Shock, Sniper (no HS), Minigun, Enforcer, Ripper Primary (no HS), Flak Primary can deal up to twice the damage if you aim at the center of the shield.
-- Pulse Rifles and Ape Cannons are now primary counters to minishields.

Biobomb and hyper leecher primary projectile speed changed from 840 to 1000

ShieldBelt now upgradeable, base upgrade cost 10.
- Base Cost = 250
- Total Upgrade cost = 150
- Armor amount is directly proportional to RU spent on the item
-- Level 0 (250) = 93
-- Level 3 (310) = 116
-- Level 5 (400) = 150
-- Calculation is done dynamically, so altering the item's values doesn't break anything (still changes proportions)


08-10-2015, 04:06 PM
Suicides no longer count as deaths (eff not altered).
Fixed division by zero on Eff calculation (0 kills + 0 deaths now counts as 1).

Visual feedback of RU earned/lost.
- Values are nominal, don't account for min,max limits.
- Feedback lasts 3.5 seconds, then resets.

bEffBasedRUKill is now enabled by default.

08-10-2015, 05:57 PM
Added bNoFractionUpgrade flag to sgBuilding to prevent fractionary upgrades, buildings that use it:
- sgItemTranslocator
- sgItemJumpBoots
- WildcardsPoisonGuardian
- sgEditBuilding (edit mode marker)
Also upgrading now never goes beyond a level's integer value (ex: 2.3 -> 3.0)
Upgrade costs not bugged if starting level has a fraction, instead the use the starting level's.
Upgrading buildings has same lock behaviour than upgrading players (no lock).
BuildIt bind doesn't lock constructor, instead the action performed does (in this case, building and one-shot repair).
Fixed multibuild exploit.
Upgrading a player now substracts score from upgraded.

Removed unused sgWarhead2 class.

Widened XC_AntigravityPlatform's antigrav cylinder at higher levels.

Reduced biobomb's blob spawn distance from 65 to 55.

08-11-2015, 11:13 PM
Ownerless teleporters can be removed.

Jetpack fixes:
- Pressing jump if walk key is already pressed does nothing.
** Lets you immediately start flying post-jump.
** Doesn't override the walk key during flight (can press and unpress while pressing walk safely)
- Jump bind mode doesn't cause the player to be stuck walking when killed.

Researched and rewritten the client simulation of jetpack physics. NOW JETPACKS LOOK ZEROPING.
- Fixed double thrust.
- Reduced thrust skipping due to an internal engine limitation.
- Simulator no longer required to reside in the collision hash (or octree in XCGE).

08-12-2015, 10:30 PM
Mines and derivates no longer detonate if they have < 0 health or if they're being deleted from the game.

Translocator fails to locate the player inside enemy solid buildings.
- No longer removes/adds bBlockPlayers to all sgBuildings in the middle of a translocation.
Translocator module goes through friendly non-blocking buildings.
Fixed accessed none warning for when module is touched by a Monster/sgBuilding.

All sgBuildings cannot be encroached (same behaviour as Super Container)
- Container no longer takes damage from encroaching.

08-13-2015, 03:20 AM
Minishields also receive directional amplified damage from Super Protectors (the closer to center point, closer to double damage).

Some sgBuildings have a GUI icon representation.

Constructor no longer uses translocator model.
- Removed option to select old constructor model.
Constructor animates when switching categories and when repairing.
Added DeepakOV's third person view (and pickup) of the new constructor model.
Added DeepakOV's constructor icon.
Repair can now target players behind buildings and non-solid collisions, performs a single trace instead of two.
Reworked constructor panel texture, has a black background now so the modulated panel stays as dark as possible.
Implemented RenderTexture on the constructor panel.

* So far the Repair function has been added, uses the repair criteria to provide live feedback on what you're about to repair (99% accurate).

08-30-2015, 03:20 PM
Added simple display for other functionalities.
Platforms can now fit smaller spaces (as Super Containers can).
Removed deprecated EXM code from platforms.
Default pub profile now limits minishields to 4.

To be internally released as 0019

10-19-2015, 06:28 PM
0020 changes from this post and on:

Unreal 1 weapon hack implemented, now Unreal 1 weapons fire in online play (bUnrealWeaponHack, default=True).
** Uses the original weapon classes, no replacement at all!

Constructor panel's traces called during Tick instead of RenderTexture.

Only clients using XC_Engine's octree will now receive anti-imagedrop updates, it's safe to keep the ImageDrop fixer enabled now.
** Clients must authorise the server first, then clients will double check before doing a positional adjustment demanded by the server.

Translocator targets won't print accessed none logs if player shooting it disconnects.

10-19-2015, 06:56 PM
Item spawner entry count changed from 24 to 32.
Item spawner entries have now a new parameter: Overtime (only spawns during overtime)

Grenade launcher has new PickupAmmoCount codes:
- 23: Full EMP
- 24: Full Napalm
- 25: Full Toxic
- 26: Full Fragmentation

Core Rules now have a 'SuddenDeathScale' setting (default 1), when overtime is reached all Core's HP are multiplied to that value.

10-25-2015, 12:25 AM
Build rules (RULE) now have a new parameter: Overtime
** Building only available during overtime
"Because sometimes, someone decides to not have fun"

Hyper Leecher build modifications:
- Cost: 275 RU
- Build time: 1 second
- Changed damage reduction from 66% to 75%
** Effective HP changes from 600 to 800
** Effective container heal changes from 3x to 4x
"Hyper Leecher binds are your way to show disapproval of explosive spammers"

Gas grenade modifications:
- Slowness factor doubled.
- Gas deals damage in 3 instances: damage-2, 1, 1
** This decreases the effectiveness of armor, as 1 damage instances are dealt directly to the player (unless he's using shield belt)
"Biological wars are a part of siegeing, just as old as the mongols that caused Black Death"

- Added GetRuleString( bNegative) method, to be used to describe a requirement for building locked builds.
"Your constructor is your new handbook, read it carefully"

- Packed all booleans into the same 4 bytes, added bOverTime and bOverTimeReached booleans.
- Added GetRuleString( bNegative) submethod, possible strings:
** Negative responses marked with (N)
-- (N) "Not available in overtime"
-- "Wait: overtime"
-- "Wait: X seconds"
-- "Cooldown ready (X)"
-- (N) "Expires in X seconds"
-- (N) "Limit: NAME (X/Y)"
-- "Need: NAME (X/Y)"
"You know what to do"

- Added GetRuleString( bNegative) submethod, triggers a negative response from child rule.

10-31-2015, 03:10 PM
- Can be placed in tighter spots.
- Insertion takes one less FCollisionHash query.

- Insertion takes one less FCollisionHash query.
- Removed unused EXM code.
- Cannot block map teleporters.

Removed Unreal 1 weapon hack (better handled in XC_Engine)

10-31-2015, 06:34 PM
- Added GetRuleString( iBuild, out bDeny); method.
** Should retrieve a rule's most relevant condition.
** bDeny is set to TRUE if the build is unavailable.
- All accessors are 'FINAL' functions now, this should slightly speedup function call during constructor rendering.
- Added PrevBuild accessor, allows seeking backwards from a build. Sektorka
- Added PrevCategory accessor, allows back cycling categories.
A new bind is coming

- Added GetRuleString( bNegative) method.
** It will give the text for the first subrule that prevents a building from being available.
** Or it will give the first subrule's string.

- Moved building/player detection traces from RenderTexture into Tick.

10-31-2015, 09:22 PM
Testing GitHub repo https://github.com/CacoFFF/SiegeIV-UT99 and a new old dev will be joining.

11-02-2015, 12:30 AM
Release 0020 commit.

A picture can say a lot, also the constructor's position is a lot better adjusted to HD displays and non-standard FOV's.
Since the critical point of this release is to see if the crashes are gone, lots of stuff haven't been implemented yet (icons, right handed constructor, sektor's implementations, etc).


12-25-2015, 10:30 PM
Bulk of 0021 post-christmas changes:

- Prevent mining enemy main suppliers.
- Print a message when attempting to do so.

- Base heal is a variable (default=1).
- ScanRadius now a function.
- Related list no longer serialized (speeds up mapswitch and garbage
- Removal of buildings further from the container's heal radius won't
trigger a heal list check (reduces unrealscript loop count and prevents
crashes in freebuild games)

WildcardsSuperContainer is now a subclass of sgContainer.
- BaseHeal=6
- Removed lots of dupliacate sgContainer code

- BaseHeal=1.2

Player respawn:
- WeaponSet no longer called for every newly created weapon.
- Instead 'SwitchToBestWeapon' is used once all weapons are given.
** Weapon priority now affects the choice of initial weapon.

Spawn protection:
- Timer no longer composite, runs on every frame instead of every 1
second, response to actions is immediate.
- Increasing ammo for current weapon doesn't make spawn protection
expire, unless player has either of fire buttons pressed.
** Supplier no longer removes spawn protection.
- Constructor doesn't count as weapon change.
** Players with Constructor as highest priority weapon can select their
initial weapon without losing spawn protection.

Weapon loader no longer requies package name for SiegeIV weapons.
Avoid SiegeIV weapon copies from adding new entries in WeaponPriority array.

Random spawner:
- Added random spawner to CTF-Icepost
- Map config no longer case sensitive (easier for admin command input)

01-02-2016, 02:49 AM
0021 release


- SharedReward now has a waste percentage applied when player is maxed out on RU.
- Players can't be prevented joining with platforms on top of PlayerStarts.
- Multigunning no longer an option, multigunning is blocked as default behaviour.

- Better RU distribution code, merged DeniedRU,AddRU into StoredRU.
- Maxed out players now give half of the wasted RU to StoredRU (accumulated and given to other players) (only RU given by core).

- Cannot be built on top of other map teleporters that lead somewhere else (test Masteroid please).
- Removed redundant touch checker.

WildcardsResources: picked up RU is shared reward (50% waste), stealing RU from enemy team is more productive.
sgProtector can be removed by teammates if built next to other leechable builds.
Core's stored RU is now displayed next to RU counter in color, now you get to see if your team is Sup spamming or being productive.
Translocator is now droppable, also dropped when killed.

- More reliable initialization.
- Non-players and local player are given preset fingerprints.

- Less polling for Category Info actor and Client Actor.
- More user friendly and reliable, holding down fire when going from category into building no longer autobuilds.
- Animations play fine now.

- Don't attempt to request fingerprint if existing one has already been given.

01-05-2016, 01:43 PM
Release 0022


- Sweeping bugs fixed for upgrade and repair.
- Screen can be disabled in GUI settings.
- Admins and Nexgen moderators can remove all buildings except core.

RU per kill given by shared reward system (50% waste if maxed).
Fixed bug causing building owner to not be displayed if reconnected.

- New owner of translocator can pick up previously fired module.
- Disrupted modules now disappear when new owner picks up the

03-15-2016, 07:45 PM
Ownership timeout for an item whose owner reconnected as spectator lowered to 2 minutes.
TickRate independant timers on sgBuilding types, better TR stability.
Mine build distance changed lowered from 45 to 37 (duck and aim down building should never fail)
Constructor multi cycle bug fixed.
Silent category switching removed.*** (Dampener +1)
Touching a sgTeleporter causes spawn protection timer to go down by 1.0 second (prevents supermine trigger bypass).
Nexgen moderators should be able to remove things now.

Flamethrower projectile rework:
-Max Ammo from 100 to 150
-Limited range.
-Only sets one building on fire at a time.
-Damage instances reworked to focus more on direct impact, and to deal even more damage to builds already on fire.

03-16-2016, 03:14 PM
0023 release (internal, check development servers)

- Experimental Inventory chain fixer, should solve most problems with item related binds not working and not being able to see weapons/ammo/armor status.
** Usually happens after picking up a tossed weapon/item
- Middle low player/building information now shows the target for the constructor's current action. (Constructor must be the selected weapon).
- Information for Spy/Feighndeath visible to teammates.

- Items no longer given to spawn protected players.
** You can safely build nukes in spawnpoints, provided you leave the spot without disabling spawn protection.
- When owner has left, lookup radius decreased by 4 units.
** Helps preventing unintended pickups.

- Update frequency changes to improve server tickrate and to make Protectors and Mines appear more quickly on clients.
- Upgrade/Repair distance changed from 90 to 92.

03-24-2016, 05:06 PM
0024 release (public https://ut99.org/viewtopic.php?f=34&t=5653)

Protectors can fire at multiple teams at once.
Removing containers won't clamp existing RU to new maximum.
Antigravity Platform effect lasts up to 1.25s more after leaving effect area.
Constructor no longer has bindable silent actions.
Fixed constructor category display on hidden weapon settings (you can see price now).
Inventory chain fixer bugfix, less aggresive.
Centralized all MaxRU, Cores[] variables (taken out of sgPRI), should result in slightly less bandwidth/cpu usage.

03-26-2016, 06:18 PM
0025 release (public https://ut99.org/viewtopic.php?f=34&t=5653)

Fixed Protector targeting bug.
Fixed Antigrav Platform effects stacking.
Leaving a game when there's no supplier will remove all your RU and give it as shared reward to the rest of the team.
Players that left the game will have their saved RU stored into Core shared reward at the following rate: (TimeScale * MinutesSinceLeft)/s
** You don't lose saved RU during the first minute.
Core will auto-upgrade to level 1 if it gains enough shared reward RU.
Some decorations will have their update frequency reduced to reduce CPU load on servers.

04-08-2016, 11:28 AM
SiegeNative plugin, private test build:

Overrides the default UnrealScript netcode regarding variable replication and polling frequency for some types.
The overriding is done entirely using c++, which tremendously decreases CPU usage and gives more abilities and rules that cannot be achieved using UnrealScript.
These characteristics include: waiting to send every X checks, evaluating the target player, increasing/decreasing polling frequency based on viewer position or choosing when to check for the superclass's variables.

Following netcode changes (from default behaviour).
* 'Sent' also means checked, one property requires a difference check to see if there has been a change and therefore, needs to be sent.
* Checking properties can be highly CPU consuming when player count increases (CPU usage increases geometrically with more players)

=== sgPRI (NetUpdateFrequency is 4hz):
- RU, Orders only sent to owner; teammates and spectators every 4 checks.
- XC_Orb only sent to owner.
- SiegeStats sent to owner; teammates every 8 checks.
- CountryPrefix only sent if IpToCountry actor exists.
- bHideIdentify only sent to enemies.

=== sgCategoryInfo (NetUpdateFrequency is 10hz, owner changes every time to each team player**):
- Actor variables (superclass) only sent during initial replication (location, rotation, etc)
- All other rules/builds/categories are sent during:
-- Initial replication.
-- During the round a player becomes owner of the category info.
-- Every 32 checks.
** This owner-rotation behaviour was done for the initial SiegeIV_0001 build, ensures only players of a specific team receive the category info rules.

=== sgBuilding (NetUpdateFrequency is variable, ranges between 5hz and 15hz)
- Pawn variables (superclass) sent every 2 checks.
- BuildTime, SCount, TotalScount, GS (build related properties) only sent if not finished building.
- UpgradeCost only sent if the building is upgradeable and less than level 5.
- Level only sent if building is upgradeable, every 4 checks.
- iRULeech, bNoRemove, bOnlyOwnerRemove only sent to friendly players, every 4 checks.
Frequency modifiers:
- Behind player's X axis: 50%
- Further than 1500 units: 75%
- Further than 3000 units: 75%
** A building's polling rate can go down as down as much as 28%.

04-25-2016, 02:17 PM
SiegeNative plugin, round 2.

=== sgProtector:
- Targeting system moved to native code, iterates through the pawn list instead of the entire actor list.

=== sgBaseBuildRule (NetUpdateFrequency is 10hz, owner changes every time to each team player):
- Actor properties (superclass) only checked during initial replication.
- All other properties (RuleName, Team, AppliedOn) checked initially or every 32 calls.
- sgBuildRuleCount derivate only checks it's properties every 5 calls.
- Properties only sent to players in it's own team.

=== sgPlayerData (NetUpdateFrequency is usually 50hz):
- Actor properties (superclass) only checked during initial replication.
- OwnerID only checked initially or every 64 calls.
- BaseEyeHeight and RealHealth follow same old rules, but are only checked if the owner player is relevant to the client as well.
** This actor takes care of making projectiles and bullets not wrongly hit ducking players in clients.
** Also helps displaying the real health on enemies if UTPure is loaded.

=== sgBuilding:
- Added hook that replaces the buggy Tick event that causes the building to wrongly operate before it initializes on low FPS games.
** No more instant nuke bug.

07-01-2016, 12:04 AM
SiegeIV_0026 changes now.

- SetOwnership no longer polled in timer (only checked once).
- Construction hp levels simulated on clients.
- Fixed instant initialization bug in low tickrates.
- NetUpdateFrequency scaler now depends on server framerate not dropping.
** If framerate drops, all sgBuildings will react by lowering NetUpdateFrequency.
- GS property eliminated.
- TotalSCount, BuildTime only sent if bNetInitial

Category rules and list use less CPU during replication (at minor initial bandwidth expense).

Fixed translocator being unable to teleport the player when touching a ceiling.
Ripper headshot damage done to Core cannot be amplified with a weapon switch exploit.
AsmdPulseRifle's damage type no longer overriden, stays at Jolted.

- Identify info now more compressed, displays RU leeched from a build.
- SiegeStats cleaned up and simplified.

- Event log merges more types of lines now (build events in particular).
- Event log limit expanded to 20 (was 16)


07-20-2016, 09:27 PM
RU bounties:
- Base is 50 + Lamer points and EFF doesn't affect it (only for campers with >80%).

Spawn protection is more forgiving with weapon changes, but drains much faster if player is shooting or waiting in supplier.
* Charging the piston drains spawn protection at twice the speed.
* Firing in Supplier can drain as fast as 4x or 6x (if SHP is present)

Constructor wheel alpha design.
- Extra textures added.
- Old GUI replaced with Wheel (GUI is temporarily unaccesible)

- Leech scale set to 110%.

- Added high-quality model effect, slightly darkens what's behind it and properly shows it's boundaries from inside.
- Initial (pre-build) Collision size changed from 28x28 to 20x20, now fits in smaller corners.

Antigravity platform:
- Initial (pre-build) Collision size reduced 25%, now fits smaller corners (as with Platform).

**Also optimized message system and better rearranged the texture groups in the package.


08-05-2016, 02:06 PM
Official build will be 0027, 0026 will be out as a beta build with the following changes

Created movement affector system.
- sgPlayerData actor handles it.
- Affectors can stack with each other depending on their priority.

Constructor wheel is operational (in a basic sense).
Super Booster post-build boost bug fixed.
Teleporters' required distance to each other increased a bit to prevent crashes. *thx Skarn
MiniShield impact effects have variable size (bigger effects = higher damage taken), pretty good for determining what's it being hit with.
Invisible players are 99% less likely to be revealed by shield-belts in low quality render mode.
UDamage timer is properly displayed (summoned UDamages don't do this for some reason)
Slightly recoded categoryinfo for optimization reasons.
sgPlayerData referenced by sgPRI for faster access.
Removed some old constructor GUI code.

Poison Guardian:
- Uses new movement affector type, gradual and lag compensated.
- Fixed possible log spam.

- Uses new movement affector system.
- Removed loads of duplicate code.
- Added ToggleSpeed bind.

Added icons for:
- Supplier
- Super Supplier
- Damage Amplifier

NetPriority tweaks:
- Increased sgBaseCore NetPriority.
- Reduced sgBuilding NetPriority.
- sgPRI temporarily increases NetPriority when RU is received.

Added XC_Engine v19 function replacements:
- sgProtector.SuitProtects
- sgProtector.FindTeamTarget
- SiegeStatics.HSize

Added XC_Engine v19 replication features:
- sgCategoryInfo -> Only relevant to players belonging to corresponding team.
- sgBaseBuildRule -> Only relevant to players belonging to corresponding team.
- sgPlayerData -> Only relevant if owner player is relevant.

Poison Guardian no longer breaks sgSpeed, players with sgSpeed item are properly slowed down.
Constructor settings menu is temporarily gone, there's these two new binds to replace that for now: ToggleSiegePanel, ToggleSiegePerformance (or go to SiegeClient.ini)

09-19-2016, 11:18 PM
0027 commits started.

- Deactivatable.
- Cost: 100
- Base upgrade: 5
- Base timer: 30, higher with upgrades.
- Status + timer displayed on HUD.
- Teleportation sounds (transloc included) are now dampened.


Fixed massive log spam bug introduced in 0026.
Lots of code cleanups.
Added icons for Invisibility, Jump Boots, Mine, Super Mine.

09-22-2016, 09:35 PM
Antigravity platform visual now properly matches the hit cylinder, solid collision hull shrunk by 1 unit. (should fix some sniper hits on side not damaging it)
Spy Suit multi-announcement bug fixed.
Damage amplifier timer display fixed (uses same code as Dampener).
Constructor wheel now renders even if weapon is hidden.
Translocator targets no longer go through friendly platforms (whops!)

Mines have a subtle 'darkener' which makes it possible to spot them in super lit maps.

New Dash Pad model and textures created.
Preliminary looks, when you see the animated panel...

09-24-2016, 06:27 PM
Super Booster:
- Now a subclass of sgBooster, inherits lagless simulation code.
- Double boost bug fixed (server only, simulation may look weird right after you touch it).
- Boost angle can be adjusted by Walk/Duck keys, walk tilts the boost upwards and duck tilts it downards.

We got a working DashPad! Cost=800, Base upgrade=45, HP=2500 (somehow between booster and SB)
- When built it attaches itself to the ground.
- Dash is immediate after touching it.
- Directional dash: the further away your movement angle differs from it's intended direction, the less powerful the dash is.
- Upgrading the pad increases the dash time from 1.2 seconds to 2.4 seconds.
- Dash adds 3x the default speed to the player's current speed (2.4 to 1.5 seconds, falls off from 1.5 to 0.0)
- Jumping makes the dash time lower twice as fast.

DashPad stacks additively with Speed item (so instead of x4 you get x5).
Can be used to go through a Poison Guardian but the PG effect will then kick in because it lasts longer than the dash effect.