Greed v1.0
Gametype for UT2004
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
6/6/04

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

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, the item doesn't have to be a coin. It can be a ring, a skull, whatever you want. You can choose from a few different items by clicking "Configure Key Item" on the Game Rules tab or you can create your own and add them to the list. See Creating Custom Key Items for more information on that.

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)

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.
Feel free to discuss this mod on my forums or email me.
KNOWN ISSUES:
None.

CHANGES:
from Greed for UT2003 v3.2:
-Added: "Punish Suicides" configurable option to Team Greed to turn on/off teams losing points for members suiciding
-Fixed: Lots of small bugs and performance issues
-Improved: Menus (takes advantage of UT2004's features)
-Improved: Bot AI, especially their endgame logic




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.