Greed v3.1
Gametype for UT2003
Created by Mysterial (mysterial@comcast.net)
Special thanks to:
DraZtiK: Coin model
Angel_Mapper: Treasure chest model
Daid: Cookie model & sound
1N54N3: Basic website layout
Sánchez: Spanish translation
Hellcat: German translation
LeBourrin: French translation
5/6/03

To install the .ut2mod version, open Greed.ut2mod, which should open the UT2003 installer.
To install the .zip version, extract it to your base UT2003 folder. By default that's C:\UT2003

NOTE: Greed may have some issues on older versions of UT2003. Please update your game to the latest version if you experience problems.

In this new gametype, kills don't get you points. Instead killed people drop a coin. You must pick it up and take it to a drop point to score it. However, to score faster, you should hoard your coins, as the scoring is like this:

1 coin = 1 point
2 coins = 2 points
3 coins = 4 points
4 coins = 7 points
...etc.

The drawback is when someone dies and they're holding coins, they'll drop all of them! So you must decide whether to go for the score or try to get that extra kill.

Actually, since v2.0 the item doesn't have to be a coin. It can be a ring, a skull, whatever you want. See Creating Custom Key Items for more information.

There is a Free for All version and a Team version, called (surprise!) Team Greed. In Team Greed, your team tries to score in the drop points of the same color, while defending the ones the other team can score in.

Bots completely understand how to play and will intelligently decide whether or not to go for the score. Sometimes they'll even camp the drop point like a human player would.

In Team Greed keep in mind that the bots interpret Freelance and Attack to be the same thing (kill the enemy and take their coins to the drop point), and that Defend means "defend the closest drop point to you that enemies can score at". Bots with the same Attack or Freelance orders will group together and protect a single bot who will try to pick up as many coins as possible.

Greed & Team Greed can be played on ANY map. In Deathmatch, drop points are randomly generated, and in teamplay maps the drop points are put where the flag, domination point, or goal would normally be. (You can also force random generation even on maps with these features)

Since version 2166 of UT2003, the game automatically puts server tabs for any new gametypes you install, so you shouldn't need to do anything to be able to find Greed servers. If you want to put up a dedicated Greed server, see Setting up a Dedicated Greed Server.

Mapmakers can make Greed-specific maps simply by loading Greed.u in UnrealEd's Actor Class Browser, placing a GreedDropPoint where you want and setting its LinkedNavPoint property to the NavigationPoint it sits on (it must sit on a nav point or the bots won't find it). Also, while the game can automatically convert any normal Greed maps to Team Greed, I recommend assigning a Team value to them anyway.

You can always find the latest version of Greed at the official Greed website.
KNOWN ISSUES:
-When playing with the Singluarity Cannon, "GreedCoinPickup fell out of world" messages may be generated in the log. This isn't actually a bug, but the game throws those messages even when the situation is actually handled. Please ignore them.

CHANGES:
from v3.0 to v3.1
-Fixed: Epic's bright skins option wasn't showing up in the Game Rules tab.
-Fixed: "Score Limit" can go to 999 again.
-Fixed: Bots very rarely ran away from the drop point when they should be scoring. Also fixes an Accessed None.
-Added: If a player loses his/her key items (either via toss or death), someone on the same team is the next to pick them up, and that player scores them, the first player gets points and adrenaline for assisting.
-Fixed: Bug with mutators that used actors requiring a custom PlayerReplicationInfo class.
-Removed: Key item display on the scoreboard in Team Greed (obsolete)
-Added: Greedy players get a U icon next to their names.
-Improved: CPU usage of bots a little more.
-Changed: Pointing your gun at someone using the Key Camouflage combo no longer shows their name on your HUD.
-Added: Victims of spawn camping don't drop key items.
-Fixed: Long player names wouldn't be displayed in the Team Greed key item display.
-Improved: Team key item display now displays properly in all resolutions >= 640x480
-Added: Map DM-Greed-Arena
-Fixed: When heading to a drop point, bots were detouring to key items on a level below them.
-Added: French translation

from v2.3 to v3.0
-Added: The Singularity Cannon now deforms terrain, courtesy of Epic's new PokeTerrain function. (Requires version 2225 or later of UT2003)
-Improved: Bandwidth and CPU use of the Singularity Cannon's effects on dedicated servers.
-Added: Mutator "[Greed] Treasure Hunt" - Players don't drop key items when they don't have any and instead you must find treasure chests to collect them.
-Added: Game settings can now be modified in WebAdmin. (NOTE: To properly set up maps in WebAdmin you need version 2225 or later of UT2003)
-Fixed: Key items in a Singularity that hit the ground due to the Singularity's pull effect would stop moving.
-Fixed: Bots were often ignoring key items dropped by people killed by another team.
-Changed: A Singularity now shoots lightning at projectiles and blows them up.
-Improved: Bots will now attempt to cover in front of the leader instead of behind him where they did no good.
-Improved: Bots on the offensive protect their leader better when he's trying to score.
-Improved: Bot leaders are more cautious when getting close to the drop point for a score.
-Mostly Fixed: Laggy key item movement.
-Added: New key item - Cookie
-Added: Mutator "[Greed] Key Camouflage" - New adrenaline combo that makes the user look like a key item (yes, bots use it and can fall for it too).
-Fixed: A long standing bug that made the Min Seperation option nearly useless.
-Fixed: Bots were "forgetting" "Cover Me" orders.
-Changed: Greedy players can no longer throw key items.
-Fixed: Very rare situation where bots would not set their leader properly.

from v2.2 to v2.3
-Fixed: Rare Accessed None
-Added: Key item name, "Punish TKs" setting, and "Mercy Spread" setting to the server browser's server settings list.
-Fixed: Bots that chose defense points long distances from the drop point would sometimes not shoot.
-Added: Key item throwing (console command "ThrowKeyItem")
-Added: Entries for "Move Own Coin Display", "Toggle Team Coin Display", and "Throw Key Item" in the Controls screen.
-Added: German and Spanish translations
-Fixed: When announcing loose items, sometimes bots would say a blank space instead of the item name.
-Fixed: Memory leak that might have caused problems in really long games.
-Added: Bots throw key items when defending, or when only have 1 and someone else is Greedy.
-Fixed: Bots with orders to follow and cover a human player will now try to score properly if they acquire enough items. -Fixed: F3 stats screen
-Added: Greed-related statistics to F3 stats screen
-Added: Mutator "[Greed] Singularity Cannon" - Replaces Superweapons with the Singularity Cannon, which sucks up key items and slaughters players.
-Changed: Superweapons now damage teammates regardless of Friendly Fire settings
-Fixed: If Mercy Spread, Score Limit, and Time Limit were all enabled, the bottom line of the scoreboard was a jumble of characters
-Fixed: If Friendly Fire was > 0 and Punish TKs was true, ALL kills would reduce team's score
-Fixed: (Team Greed only) Random drop points would be created on levels with drop points built in to them.

from v2.1 to v2.2
-Fixed: Bots with orders to cover you will no longer sit on top of the drop point you're supposed to score at doing nothing.
-Fixed: "xxxxx is being Greedy!" messages weren't being displayed in FFA Greed.
-Improved: Bot AI optimized more.
-Partially Fixed: Laggy coin movement on clients in netplay. NOTE: They're still laggy sometimes, especially when shot.
-Fixed: The key item was always called "coin" on clients in netplay.
-Fixed: Custom key item static mesh still wasn't always getting precached.
-Defending bots now make use of UnrealScriptedSequences to determine the best defensive point.
-Attacking bots now use AssaultPaths when choosing an attack path.

from v2.0 to v2.1
-Improved: Team key item display updates faster
-Fixed: Custom key item static mesh and HUD texture are now precached properly.
-Fixed: In Greed (but not Team Greed), a custom HUD texture wouldn't show up if it was on the left side of the screen. It would also spam Accessed Nones to the log.
-Improved: Bots are more aware of items dropped by or because of human players. (Now you can leave items for a bot to pick up and they'll actually do so)
-Fixed: Some (usually rare) hitches caused by the bot AI. Drawback: Slightly less responsive bots.
-Fixed: Bots no longer have problems handling multiple Greedy players on the same team.

from v1.2 to v2.0
-Added: Custom key item support
-Added: "Item Lifetime" option - determines how long in seconds the key item stays before vanishing
-Added: "Use Weight" option - makes each key item carried slow down the player by a percentage specified in the item's .int description.
-Added: Key item .int parameters - bouncyness and movement from taking damage
-Added: New key items - Bouncy Coin, Ring, and Bouncy Ring
-Fixed: Bots no longer say "0 loose coins"
-Fixed: Bots track # of loose coins better when multiple deaths occur very quickly
-Fixed: Bots no longer say "x loose coins in Spectating"

from v1.1 to v1.2
-Fixed: Removed another debug log message I accidentally left in
-Fixed: Coins dropped from dead players can be collected before they hit the ground.
-Changed: Bots that can win the game with the coins they have will no longer go out of their way to get more coins.
-Fixed: Accessed Nones and other foolishness after the game ended
-Fixed: Min Seperation option wasn't doing anything
-More general bot AI improvements
-Defending bots will announce coins dropped from enemies they've defended against, and will avoid picking coins up.
-Changed: When converting BR maps, the swirl inside BR goals is now removed, and the Greed drop point graphics are added instead.
-Bots who become "Greedy" and are not close to a drop point will wait for a while for support before attempting to score.

from v1.01 to v1.1
-Added: When someone is "Greedy" in a Team Greed game, attacking bots on the same team will attempt to cover that player, while most of the bots on the other team will group together around the drop point and try to defend it.
-Fixed: Bots will no longer sometimes stick their face into a wall when defending (still not great defensive positioning, but better)
-Added: In Team Greed, the direction to the nearest drop point for each team is shown on the HUD.
-Fixed: "Num Drop Points" setting was having no effect
-Fixed: "Punish TKs" setting wasn't being saved.
-Added: "Mercy Spread" option (Team Greed only) - if the difference in the teams' scores is this or greater, the game ends (0 = off).
-Removed: "Max Lives" option (not relevant)
-Added: "Min Seperation" option - determines minimum distance drop points must be from each other
-Added: Console command "ToggleTeamCoins" (no quotes) will toggle a display of the coins your teammates possess in the left of your HUD. Default is on.
-Changed: "Score Limit" can go to 999.
-Improved general bot AI a bit, especially in Team Greed
-Fixed: Ammo picked up while holding coins didn't increase ammo count
-Fixed: Mutators were allowed to kill the coins (this fixes the Instagib bug)
-Added: Console command "MoveSelfCoins" will switch your own coin display from the right side of the screen to the left side and back.

from v1.0 to v1.01
-Fixed: bots that were defending would sometimes try to score anyway.
-Fixed: bots in Team Greed were trying to score when they had good enough health/armor/powerups to go for more.
-Fixed: accidentally left an old debug log message in there
-Fixed: Accessed None in DiscardInventoryAndCoins()
-Changed: Bots can now find coins that they know about but are behind or to the side of them.

Please send all bug reports, suggestions, or comments to mysterial@comcast.net



Creating Custom Key Items

To fight for your own item in Greed, you need four things: a static mesh, a HUD texture, a pickup sound, and an .int entry. You don't need to do any coding.

The HUD texture should be 128x128; other than that the first three items are self-explanatory. The .int needs some explaining. First, create an .int file (don't edit Greed.int or any other .int). The first line in the file should be:
[Public]
All lines afterwards should contain object descriptions. They look like this:
Object=(Class=Class,MetaClass=Greed.GreedCoinPickup,Name=CoinType2,Description="Bouncy Coin|coin|GreedStatics.Coin1|GreedTex.Icons.Coin1|GreedSounds.Coin1Pickup|0.30|false|5|1.0")
Here's info about each element:
"Class=Class,MetaClass=Greed.GreedCoinPickup" This should always stay the same; it is how Greed recognizes this .int entry
"Name=CoinType2" Name can be anything you want, as long as it is unique.
"Description=" This is where you specify the object's parameters

Here's the parts of the description string - make sure each is seperated with the pipe character |
"Bouncy Coin" This is the name of the item as it will appear in the item selection menu.
"coin" This is the name of the item as it will be used in game text, e.g. "Somebody got to a drop point with their 3 [name]s"
"GreedStatics.Coin1" This is the identifier of the static mesh of the object.
"GreedTex.Icons.Coin1" This is the identifier of the texture of the HUD icon that's displayed on the counter of how many you are currently holding.
"GreedSounds.Coin1Pickup" This is the identifier of the sound that will be played when this item is picked up.
"0.30" This is how bouncy the item is. Higher numbers result in more bounce. The item will still work properly if it bounces for a long time or forever so you can, if you want, go higher than 1.
"false" This specifies whether or not the item rotates after it's done falling/bouncing.
"5" This is the item's weight. If the "Use Weight" option is checked in the menus, every one of this item a player is carrying will reduce his speed by this percentage.
"1.0" If this is non-zero, the item will be able to be shot and will move based on where and how strong of a hit it is. The damage will be multiplied by this float before calculating trajectory.

You'll know you did it right if your item shows up on the Key Item Configuration menu. If your item doesn't appear, search your UT2003.log for "Greed item type"; hopefully the log lines that leads you to will help you determine what you did wrong.



Setting Up a Dedicated Greed Server

The first thing you need to know is that if you use a custom key item other than the ones that come with Greed, you MUST add the relevant staticmesh/texture/sound packages to your ServerPackages lines in UT2003.ini - if you don't your players will be fighting over pockets of air :/

Other than that, there's no known issues running a Greed server from the UT2003 menus. However, most dedicated server admins want to run their server from the command line. In that case, there are extra URL options you should be aware of.

Each option should be seperated by a question mark ? with no spaces in any of it.
All options are saved in Greed.ini and don't need to be included on the command line unless you want to change them. They also all appear in WebAdmin, under the "Game" and "Key Item" categories.

bForceRandDPs if true, the game ignores any existing greed drop points or objects that are convertable to one and instead spawns drop points randomly. note: maps without any convertable objects will be randomized regardless of this setting. (default false)
NumDropPoints when randomly generating drop points, this many will be spawned. in team greed, this value is forced to an even number. (default 2)
MinSeperation when randomly generating drop points, they must be at least this many unreal units apart if the level allows it (default 1000)
bPunishTKs (team greed only) if true, teams lose a point for team kills (default true)
MercySpread (team greed only) if not 0, when a team is winning by this much or more, they win (default 0)
CoinName the name of the key item as used by the game text (e.g. "someone got to a drop point with their 3 [name]s") (default "coin")
CoinStaticMeshName the identifier of the static mesh used for the key item (default greedstatics.coin1)
CoinHUDTextureName the identifier of the texture of the hud icon that's displayed on the counter of how many you are currently holding. (default greedtex.icons.coin1)
CoinPickupSndName the identifier of the sound that will be played when this item is picked up. (default greedsounds.coin1pickup)
CoinBouncyness this is how bouncy the item is. higher numbers result in more bounce. the item will still work properly if it bounces for a long time or forever so you can, if you want, go higher than 1.
bCoinRotates this specifies whether or not the item rotates after it's done falling/bouncing.
CoinLifetime this is how long in seconds the item stays before it vanishes
CoinWeight every coin a player picks up reduces his movement speed by this percentage.
CoinDmgMult If this is non-zero, the item will be able to be shot and will move based on where and how strong of a hit it is. The damage will be multiplied by this float before calculating trajectory.