FRAGNEWNET
--------------DESCRIPTION--------------
NewNet - "Modern Netcode for UT99 (AKA a bunch of hacks)" ©
Main features NewNet:
- no delay before firing at high ping
- motion compensation at high ping
- smooth movements at high ping
- fast weapon switch
FragNewNet (FNN) is based on the UltimateNewNet
Beta 1e (UN1e) by Deepu
UltimateNewNet is based on the original NewNet code written by TimTim
FNN contains IG+ code
FNN is primarily intended for classic game modes (DM, TDM, LMS, CTF, AS,
DOM).
Inside the package there are mutators that modify these game modes
(TeamLMS, ComboGib, Instagib, etc)
--------------UPDATE--------------
Copy the new fnnXXX.u (XXX - new version FNN, YYY - old version FNN) to
System folder game.
Change the all values fnnYYY to fnnXXX in the files:
UnrealTournament.ini, FragNewNet.ini, mapvote.ini (the name file may be
different depending on the mapvote you are using)
EXAMPLE:
UnrealTournament.ini
ServerPackages=fnnYYY --> ServerPackages=fnnXXX
ServerActors=fnnYYY.NewNetServer --> ServerActors=fnnXXX.NewNetServer
FragNewNet.ini
[fnnYYY.UTPure] --> [fnnXXX.UTPure]
[fnnYYY.DoubleJump] --> [fnnXXX.DoubleJump]
etc.
--------------INSTALLATION--------------
Copy the fnnXXX.u (XXX - version FNN) to System folder game.
UnrealTournament.ini:
[Engine.GameEngine]
ServerPackages=fnnXXX
ServerActors=fnnXXX.NewNetServer
(or as a mutator:
1. in MapVote: fnnXXX.NewNetServer
2. in bat: fnnXXX.ST_Mutator,fnnXXX.UTPure)
After starting the server, the FragNewNet.ini file with the FNN settings
is created in the System folder game.
Description of settings:
The default damage values are the same as in the original game. To get
the real damage value, multiply the FNN value by 1.5
[fnnXXX.UTPure]
HammerDamagePri=60.000000
HammerDamageSec=20.000000
HammerDamageSelfPri=36.000000
HammerDamageSelfSec=24.000000
EnforcerDamage=17.000000 (Hitscan damage)
BioDamagePri=40.000000 (Deals damage in a
radius. The further from the center of the body, the less damage)
BioDamageSec=75.000000 (Deals damage in a radius.
The further from the center of the body, the less damage)
BioDamageCharging=150.000000 (Damage
when fired with a not fully charged BioRifle)
BioDamageCharged=300.000000 (Damage
when fired with a fully charged BioRifle)
ShockDamagePri=40.000000 (Hitscan damage)
ShockDamageSec=55.000000 (Deals damage in a
radius. The further from the center of the body, the less damage)
ShockDamageCombo=165.000000 (Deals
damage in a radius. The further from the center of the body, the less damage)
PulseDamagePri=20.000000 (Hitscan damage)
PulseDamageSec=4.000000 (Hitscan damage)
RipperDamagePri=30.000000 (Hitscan damage)
RipperDamageSec=34.000000 (Deals damage in a
radius. The further from the center of the body, the less damage)
MinigunDamagePri=9.000000 (Hitscan damage)
MinigunDamageSec=14.000000 (Hitscan damage)
FlakDamagePri=16.000000 (Damage from one
chunk. One shot contains 8 chunk)
FlakDamageSec=70.000000 (Projectile Direct Hit
Damage. The projectile, upon hitting the surface, explodes and releases 8
chunk)
RocketDamagePri=75.000000 (Deals damage in a
radius. The further from the center of the body, the less damage)
RocketDamageSec=80.000000 (Deals damage in a
radius. The further from the center of the body, the less damage)
SniperDamagePri=40.000000 (Hitscan damage)
SniperHeadshotDamage=100.000000 (Hitscan
damage)
H4xDamagePri=45.000000 (Hitscan damage)
H4xHeadshotDamage=100.000000 (Hitscan
damage)
H4xSpeed=1.000000 (Reload speed)
HookDamageMode0=1.000000 (Damage for setting
HookKillMode=0)
HookDamageMode1=13.000000 (Damage for setting
HookKillMode=1)
ComboGibDamagePri=700.000000 (Hitscan
damage)
ComboGibDamageSec=700.000000 (Deals
damage in a radius. The further from the center of the body, the less damage)
ComboGibDamageCombo=700.000000 (Deals
damage in a radius. The further from the center of the body, the less damage)
ComboDamageType=ShockCombo (Makes fnn compatible
with mutators for combo kill detection)
bNNAnnouncer=True (True - automatically add
an announcer for new multi Kill messages for players and spectators, False -
automatically add an announcer for classic multi Kill messages for players and
spectators)
bAnnouncerForSpecs=True (False - turns off the
any announcers for spectators. This is to allow administrators to use
third-party mods for multikill messages. True - activates the announcer for
spectators. If NNAnnouncer=True there will be new multikill messages. If
NNAnnouncer=False - classic multikill messages)
bDMPlayerCount=False (True - displays the
number of players in the game in the HUD.)
bTeamPlayerCount=False (True - displays the
number of players in each team (blue and red) in the HUD)
bHUDCTF4=False (True - if the game
mode is CTF4, then the CTF4 HUD will be used instead FNN HUD)
bHUDMultiCTF=False (True - if the game
mode is MiltiCTF, then the MiltiCTF HUD will be used instead FNN HUD)
bDoubleEnforcers=True (False - the player
will not get a second Enforcer when picked up, only ammo)
bBrightPlayer=False (This function makes the
player to look brighter, it does not change the parameters of the light
(brightness or such), only makes him immune to light, practically becomes
visible all the time, including in dark places)
bSpecBehindView=True (False - Spectators
has behindview 0 by default).
bShowCarcass=True (True - the corpses
will be visible after kills. False — the corpses will be hidden).
bShootCarcass=True (True - players can
destroy corpses with weapons. False - corpses are only visible, but not part of
the game)
bBunnyHopping=True (False - players will
be slowed down to ground speed upon landing, which prevents Bunny Hopping.True
- landing works like before in newnet)
bSmoothFOVChanges=False (True - smooths out
FOV changes so they arent as jarring when spawning and zooming with a sniper
rifle)
bRedeemerControls=False (True - adds the
ability to control the speed of Redeemer Warhead (crouch - reduces speed, jump
— increases speed))
PlayerPacks[0]= (Config list of
supported player packs)
PlayerPacks[1]=
PlayerPacks[2]=
bForceDefaultHitSounds=False (True -
clients will be forced to use HitSound installed on the server by default,False
- clients can select hitsounds themselves by entering in the console: hitsounds
1/2/3/4/5/6/0)
DefaultHitSound=2
DefaultTeamHitSound=3
bAdvancedTeamSay=False (True – enable Advanced
TeamSay:
%H = Your current health. Example - 80 Health
%h = Your current health. Example - 80%
%W, %w = Your current weapon. Example - a Sniper Rifle
%A = Your current Armor. Example - 150 Armor
%a = Your current Armor. Example - 150A
%P = Your current Position/Task. CTF Only)
bAutoPause=False (Enable or disable
autopause. bTournament only)
MinClientRate=12000 (Minimum allowed
client rate)
MaxClientRate=25000 (Maximum allowed
client rate)
bUseOldLogo=False (True - use old logo
FNN bottom left in start game)
bUsePureConsole=False (True - replace the
console with own console and enable protection to prevent unwanted settings
changes)
--------------GAME MODES AND MUTATORS--------------
__________Last Man Standing__________
MapVote.ini
CustomGameConfig[1]=(bEnabled=True,GameClass="fnnXXX.LastManStanding",NewPrefix="LMS",Mutators="",Settings="")
UnrealTournament.ini
[fnnXXX.LastManStanding]
bDynamicBots=False
NumberDynamicBots=0
FragLimit=20
TimeLimit=13
bMultiWeaponStay=True
bForceRespawn=False
bUseTranslocator=False
MaxCommanders=0
bNoMonsters=True
bHumansOnly=False
bCoopWeaponMode=False
bClassicDeathMessages=False
MinFOV=80.000000
MaxFOV=130.000000
MaxNameChanges=0
__________Last Team Standing__________
MapVote.ini
CustomGameConfig[1]=(bEnabled=True,GameClass="fnnXXX.TLastManStanding",NewPrefix="TeamLMS",Mutators="",Settings="MinPlayers=2")
UnrealTournament.ini
[fnnXXX.TLastManStanding]
bNoTeamChanges=False
FriendlyFireScale=1.000000 (do not change this value, change this value
in mapvote)
MaxTeams=2
GoalTeamScore=0.000000
MaxTeamSize=16
FragLimit=0
TimeLimit=15
bMultiWeaponStay=True
bForceRespawn=True
bUseTranslocator=False
MaxCommanders=0
bNoMonsters=True
bHumansOnly=False
bCoopWeaponMode=False
bClassicDeathMessages=False
MinFOV=80.000000
MaxFOV=130.000000
MaxNameChanges=0
__________InstaGib__________
Mutator: fnnXXX.NewNetIG
[fnnXXX.NewNetIG]
bTeamColor=False (Team color of weapons and shots)
__________Zooming InstaGib__________
Mutator: fnnXXX.NewNetZIG
__________Sniper Arena__________
Mutator: fnnXXX.NewNetSA
FragNewNet.ini
[fnnXXX.NewNetSA]
bAllowJumpBoots=True
bAllowHealthPickups=True
bAllowArmorItems=True
bAllowInvisibility=False
bAllowAmplifier=False
__________Flak Monkey Arena__________
Mutator: fnnXXX.NewNetFM
FragNewNet.ini
[fnnXXX.NewNetFM]
bAllowJumpBoots=True
bAllowHealthPickups=True
bAllowArmorItems=True
bAllowInvisibility=False
bAllowAmplifier=False
bBroadcastFlakMonkey=True (True - broadcast message in the chat area
about “Flak Monkey”)
bRepeatFlakMonkey=False (True - repeat message and sound “Flak Monkey” every SoundAfterKills)
SoundAfterKills=3 (Number of kills after which the “Flak Monkey” sound and message appears)
__________Shock Domination__________
Mutator: fnnXXX.NewNetSDOM
__________Rocket Arena__________
Mutator: fnnXXX.NewNetRA
FragNewNet.ini
[fnnXXX.NewNetRA]
bAllowJumpBoots=True
bAllowHealthPickups=True
bAllowArmorItems=True
bAllowNoSmoke=True (True - removes smoke from rockets)
bAllowInvisibility=False
bAllowAmplifier=False
bAllowRedeemer=False
__________ComboGib__________
Mutator: fnnXXX.NewNetCG
FragNewNet.ini
[fnnXXX.NewNetCG]
bAntiSpam=False (True - Activates anti-spam shooting)
FireRateScale=0.500000 (Adjust primary firing speed if bAntiSpam=True)
AltFireRateScale=0.500000 (Adjust secondary firing speed if
bAntiSpam=True)
bAllowJumpBoots=True
bAllowScubaGear=False
bAllowFlashlight=False
bAllowSuits=False
bAllowHealthPickups=False
bAllowArmorItems=False
bAllowInvisibility=False
bAllowRedeemer=False
bTeamColor=False (True - Team color of weapons and shots)
bIGColor=False (True – InstaGib color of weapons and shots)
Works if ComboDamageType=ShockCombo in [fnnXXX.UTPure] section.
bBroadcastComboWhore=True (True - broadcast message in the chat area
about “Combo Whore”)
bRepeatComboWhore=False (True -
repeat message and sound “Combo Whore” every SoundAfterCombos)
SoundAfterCombos=3 (Number of combo kills after which the “Combo Whore”
sound and message appears)
__________Grapple Hook__________
Mutator: fnnXXX.NewNetGH
FragNewNet.ini
[fnnXXX.UTPure]
HookDamageMode0=1.000000 (Damage for setting HookKillMode=0)
HookDamageMode1=13.000000 (Damage for setting HookKillMode=1)
[fnnXXX.Grappling]
HookSpeed=2700
HookKillMode=1 (0 - be attracted by the grapple to the enemy and inflict
constant damage,
1 - damaging an enemy when firing a grapple, 2 - disable kill mode)
Range=5000.000000
FlySpeed=1.000000
FFlySpeed=1.000000
SpeedFactor=2.000000
bFlagFly=False
bFlagNoAttach=True
bFlagTeamTravel=False
bDropOnfire=True
bNotifyKeyBind=True (True - send message for bind key for grapple)
__________h4x Sniper Arena__________
Mutator: fnnXXX.NewNetH4X
Mutator: fnnXXX.XlocMut (Translocator for large maps)
FragNewNet.ini
[fnnXXX.UTPure]
H4xDamagePri=45.000000 (To get the real damage value, multiply the FNN
value by 1.5)
H4xHeadshotDamage=100.000000
H4xSpeed=1.000000
[fnnXXX.NewNetH4X]
bAllowJumpBoots=True
bAllowHealthPickups=True
bAllowArmorItems=True
bAllowInvisibility=False
bAllowAmplifier=False
bAllowRedeemer=False
[fnnXXX.XlocToss]
XlocTossForce=830 (Changing the distance the translocator can be thrown)
__________All weapons__________
Loads the weapon to the player's inventory at the start of the game. Weapon
will not drop from the killed player.
Mutator: fnnXXX.GiveWeapons
FragNewNet.ini
[fnnXXX.GiveWeapons]
bDoubleEnforcer=True (True - the player will get DoubleEnforcer)
bGiveAllWeapons=True (True - the player player will get all weapons,
False — the player will get default weapon )
bGiveRedeemer=False (True - the player will get Redeemer)
bGiveTranslocator=False (True - the player will get Translocator)
GiveMaxAmmo=199 (The number of ammo for all weapons)
__________All armors__________
Adds armor to the player's inventory at the start of the game.
Mutator: fnnXXX.GiveArmors
FragNewNet.ini
[fnnXXX.GiveArmors]
bGiveShieldBelt=True
bGiveArmor=True
bGivePads=True
bGiveBigKegHealth=True
__________Items on the map__________
Allows to remove items from the map.
Mutator: fnnXXX.NoItemsMap
FragNewNet.ini
[fnnXXX.NoItemsMap]
bNoAllWeapons=True
bNoRedeemer=True
bNoAmmo=True
bNoInvisibility=True
bNoAmplifier=True
bNoShieldbelt=True
bNoArmor=True
bNoThighPads=True
bNoBigKegOHealth=True
bNoMedBoxes=True
bNoVials=True
bNoJumpBoots=True
__________NoDamageBoost__________
Mutator: fnnXXX.NoDamageBoost
FragNewNet.ini
[fnnXXX.NoDamageBoost]
bNoWeaponDamage=True (True - the player will not take damage from his
weapons)
bNoArmorDamage=True (True - the player will not take damage armor from
his weapons)
bNoFallingDamage=True (True - the player will not take damage from
falling)
bNoZoneDamage=True (True - the player will not take damage while in the
damage zone, example acid)
bNoTeamBoost=True
__________TeleportToPoint__________
Allows, using commands to teleport the player to the designated place.
Mutator: fnnXXX.TeleportToPoint
FragNewNet.ini
[fnnXXX.TeleportToPoint]
bCmdInform=True (True - the players will be told the command to print
all the available commands.)
CmdFormatting=! (Symbol ! to be put at the start of the message to be
interpreted as a command)
bCmdFormattingMutate=True (True - cmdFormatting must be put when using
"mutate" command.)
MaxCPs=3 (Max amount of CPs that can be spawned. When reached, CPs will
start to recycle.)
bTeleportEffect=False (True - the GameType's teleport effect will be
spawned at target location when teleporting)
bDisallowCaps=True (True - the player cannot take the flag if he used
the commands)
Commands:
!cmd - Displays this thing
!spawn - Teleports you to a PlayerStart
!cp - Creates a checkpoint
!prevcp - Moves your CP to a previous location
!nocp - Deletes your checkpoint
!gocp - Teleports you to your checkpoint
!go <player_name> - Teleports you to the first player found with a
similar player_name
__________Double Jump__________
Mutator: fnnXXX.DoubleJump
FragNewNet.ini
[fnnXXX.DoubleJump]
MaxJumps=2 (Changing number of jumps, no more than 10)
JumpHeight=1.200000
bJumpWithFlag=True
bJumpWithDodge=True (True - enable double jumps after dodge, False —
disable jumps after dodge)
bJumpWithBoots=True (True - double jump will be at the height of
JumpBoots, False - double jump will be at the height JumpHeight)
__________Commands__________
Mutator: fnnXXX.CmdMut
FragNewNet.ini
[fnnXXX.CmdMut]
bUseTeamSwitch=True (team change allowed using commands)
bUseBalanceTeams=True (team balance allowed using commands)
Commands:
- Team commands - !R (!RED), !B (!BLUE), !G (!GREEN), !Y (!YELLOW,
!GOLD), !N (!NONE), !T (!TEAM, !TEAMS)
- Game commands - !P (!PLAY), !S (!SPEC), !QUIT (!EXIT), !LEAVE (!BYE),
!V (!VOTE)
__________BeaconPlayer__________
Displays the player's name above his head.
Mutator: fnnXXX.BeaconPlayer
FragNewNet.ini
[fnnXXX.BeaconPlayer]
bShowForSpectators=True (True - shows the names to spectators)
bShowForPlayers=True ( True - shows the names to players)
bShowForTeammates=False (True - shows the names of only teammates)
bShowHealth=False (True - displays health next to the name)
bSmallFont=False
bMediumFont=True
bBigFont=False
__________AntiCamp__________
Helps take action against camper.
Mutator: fnnXXX.AntiCamp
FragNewNet.ini
[fnnXXX.AntiCamp]
bCampDamage=True (True - the player will lose health (CampDamage) after
downtime)
CampTime=10 (Downtime in seconds in radius (CampRadius) when the player
is mistaken for campers)
CampRadius=100 (The radius at which the downtime is counted for campers)
CampDamage=30 (The amount of health that the player will lose after
downtime)
bCampFatness=True (True - the player will get fat after downtime)
CampFatness=20 (How much the player will get fat from 128 to 240 (128 —
default Fatness, 240 - maximum Fatness))
bDeathMaxFatness=True (True - when the maximum Fatness (240) the player
dies)
bCampSpeed=True (True - the player will lose speed after downtime)
CampSpeed=10 (How much the player will speed slow down from 100 to 0)
MinLimitSpeed=0.5 (The player's minimum speed limit that will be set
during a speed loss, 1 - normal speed)
bTakeLivesTime=True (True - each players health is draining 1 health
point per second)
bKillBonuses=True (True - each kill is rewarded with health points
(HealthBonuses) or, in 5% of the cases, with either UDamage, Armor or
ThingPads. Not valid for mode ComboGib and InstaGib)
HealthBonuses=25 (How many health points will be added in the form of
bonuses for the kill)
MaxHealthBonuses=199 (The health limit that a player can get for
bonuses)
__________Idlers to Spectators__________
The player will be automatically switched to spectator mode or, if
spectator slot is full, kicked player after the idle time, if he is idle (does
not move - does not press movement keys and no view rotation with the
mouse, does not shots, does not write to chat)
Idle player with a flag is excluded. The mutator will only work in
conjunction with the CmdMut mutator or another third-party mutator that
supports the player to spectator switch command (!s).
Mutator: fnnXXX.SpecIdlers
FragNewNet.ini
[fnnXXX.SpecIdlers]
SpecTime=60 (The time in seconds after which the idle player will be
switched to spectator mode)
WarningMessage=5 (The time in seconds before the player switches to spectator
mode or kicked, he will observe a warning message)
bBroadcastMessage=True (True - broadcast message in the chat area
indicating that the player has been set as spectator due to inactivity)
__________UnlimitedAmmo__________
Adds unlimited ammo to the player's inventory.
Mutator: fnnXXX.UnlimitedAmmo
FragNewNet.ini
[fnnXXX.UnlimitedAmmo]
RedeemerUnlimited=False
__________NoSmoke__________
Removes smoke from rockets in weapon Rocket Launcher.
Do not use it in conjunction with the NewNetRA mutator, as it already
contains this feature or disable this feature in the NewNetRA mutator
bAllowNoSmoke=False.
Mutator: fnnXXX.NoSmoke
__________ScoreSave__________
Saves frags and deaths after player disconnect.
Mutator: fnnXXX.ScoreSave
[fnnXXX.ScoreSave]
SSDelay=4.000000 (Time in seconds after which the score is saved)
__________Disabling FNN for custom game support__________
Mutator: fnnXXX.DisableNewNet
__________Disabling FNN weapons for custom game support (custom weapons,
unreal1, etc)__________
Mutator: fnnXXX.DisableWeapons
__________Auto Pause__________
If you run AutoPause as a mutator, then you need set bAutoPause=False in
[fnnXXX.UTPure] section.
Mutator: fnnXXX.PureAutoPause
FragNewNet.ini
[fnnXXX.PureAutoPause]
PauseTotalTime=300
Pausetime=60
Timeouts=0
__________RX fix__________
This mutator needs to be added to game modes where RX weapon is used
(example Strangelove game mode). Mutator fixes random air stuck player while
jumping off the rocket.
Mutator: fnnXXX.RXfix
--------------INSTALLATION SKINS Bonus Pack 1, Bonus Pack 4--------------
This skin packs within itself such skins as: Nali Cow, Nali, Skaarj
Trooper, XanMK2, WarBoss.
Some skins may have problems with team colors in team games.
Copy the BP1HXXX.u, BP4HXX.u (XXX - version FNN) to System folder game.
Copy the UTBonusPacks to System
folder game.
UnrealTournament.ini:
[Engine.GameEngine]
ServerPackages=BP1HXXX
ServerPackages=BP4HXXX
ServerPackages=multimesh
ServerPackages=EpicCustomModels
ServerPackages=TCowMeshSkins
ServerPackages=TNaliMeshSkins
ServerPackages=TSkMSkins
ServerPackages=SkeletalChars
FragNewNet.ini
[fnnXXX.UTPure]
PlayerPacks[0]=BP1
PlayerPacks[1]=BP4
PlayerPacks[2]=
--------------INSTALLATION SKINS Valhalla Avatar--------------
These skin pack a number of bugs due to incompatibility with newnet:
- flying after the start of the match
- "freezing" after death
- maybe others
This skin pack contains a lot of confusing code. It takes a lot of time
and effort to tidy up this code and make it FNN compatible.
I strongly advise against using these skin pack on your server. If you
do decide to do this, then what you need to know:
- These skins need to be run without BP1 and BP4.
- This skin pack contains such skins as:
Male 1, Male 2, Male 3, Female 1, Female 2, Nali, Skaarj Trooper,
Nali Cow, War Boss, Xan Mark ][, Boss.
They can be selected in the game in the "Player
Settings" menu after you enter the server
- This skin pack allows clients to see their own set skin on a server,
when the server has no ServerPackage set. Other clients will still
see the default skin, unless a ServerPackage on the server is set which
sends it to all clients.
Copy the VAHXXX.u (XXX - version FNN) to System folder game.
UnrealTournament.ini:
[Engine.GameEngine]
ServerPackages=VAHXXX
FragNewNet.ini
[fnnXXX.UTPure]
PlayerPacks[0]=VA
PlayerPacks[1]=
PlayerPacks[2]=
--------------USEFUL INFO--------------
__________Info__________
FNN compiled on patch 469b.
Do not use FNN with XC_Engine mod.
Use FNN with patch 469b on the
server.
__________Client rate__________
FragNewNet.ini
[fnnXXX.UTPure]
MinClientRate=12000
MaxClientRate=25000
The difference between MinClientRate and MaxClientRate must be no more
than 15000
__________Demo Record__________
For correct display of demo rec need to use Demo Manager:
- 3.5 for
client with path 436 (or 451)
- 3.5.1 (inside the patch) for client with path 469.
UnrealTournament.ini:
[Engine.Engine]
DemoRecordingDevice=udemo.uDemoDriver
;DemoRecordingDevice=Engine.DemoRecDriver
__________Bugs__________
- On demorec Rocket Launcher missiles are not destroyed when they hit
the player and fly further.
- In spectator mode, when watch the player, multi-kills messages can
continue after the player dies, respawn and kill within a second.
If you have other errors, this does not mean that the problem is in FNN.
Before making a conclusions, test multiplayer without FNN or without mods.
Also you can go to the servers where FNN is configured and working
correctly:
1.FRAG - DM TDM LMS CTF - BEST MAP --> 195.98.73.166:7777
2.FRAG - DUEL --> 195.98.73.166:5555
3.DECK16][ ALL WEAPONS --> 195.98.73.166:6666
__________Credits__________
TimTim - Original NewNet code.
Deepu - Ultimate NewNet code.
Deaod - IG+ code.
MyTulpa, `esnesi, medor, Zim, vw!rato.skt, Dark191, ue, forsezor,
Smiley, pho`, jenova*, TaglesMalsto, VenoX, BearBeard - Testers.
ProAsm, snowguy, Buggie, chacha - help with code.
__________Contact__________
EMail: asosed@gmail.com
Discord: asosed#3303