   ;//////////////////////////////////////////////////////////////////////////////
;FILE: Crate.ini (SYSTEM) ////////////////////////////////////////////////////
;//////////////////////////////////////////////////////////////////////////////

; This file holds both the CrateData structures that define the conditions
; for creating a crate and the Objects that represent Crates in the game world
; which are simply Objects with CrateCollide modules.

; A CrateData name is what a CrateDie module will reference in its DieData.
; A Crate is an Object referenced by a CrateData in the CrateObject field to get created on success.
; CreationChance is the only Condition that is mandatory, since it defaults to zero.

; Below the definitions of CrateData are the actual Crate Objects.  The only important parts there are the
; name of the model, the type of Collide module, and the data to that module.

; Also included is a sample Die module that must be added to the object in Faction*.ini.
; The CrateData entry is what connects the crate listings here to the objects that make them.

; Multiple CrateData entries mean AND, multiple CrateObject entries mean OR.   
; Remember that, it will make total sense in a minute.

; -=-=-=-=-=-=- EXAMPLE -=-=-=-=-=-=-
; ***Give this Die Module to whomever you want to produce a crate on death

;Behavior = CreateCrateDie
;; CrateData = TestCrate    ; These listings are not guarantees, the Conditions are in the CrateData
; CrateData = TestCrate2  ; These independent listings can each produce at most one Crate
;End                
                  

; ***Now define the CrateData you mentioned in the Die modules

; The CreationChance is the only required field, the other two are optional.  1.0 for Chance means always
;CrateData TestCrate
;  CreationChance = 0.75  ; Between 0 and 1, this adds a random condition to this entire CrateData
;  VeterancyLevel = ELITE  ; REGULAR, VETERAN, ELITE, or HEROIC: This describes the victim holding the CrateDie
;  KilledByType = SALVAGER  ; This is the KINDOF that needs to be the killer to make the crate.  This should be on the Missile as well as the Missile firing unit
;
;  CrateObject = CrateTemplate 0.4  ; If all Conditions suceed, then this Object is created
;  CrateObject = CrateTemplate2 0.6 ; The percent here should add up to 1.0, and allows multiple choices within the one CrateData
;
;  Utility Flags:
;  OwnedByMaker = Yes, to have the Crate assigned to the default team of the dead guy's player for scripting.
;End

; ***Now add one of the following CollideModules to the CrateTemplate below.

; ForbidOwnerPlayer = Yes  Works with OwnedByMaker (or by explicit ownership script) to prevent a certain 
; player from picking up the crate.  It can be used in any CrateCollide.

; BuildingPickup = Yes lets the crate be picked up by a building, for plane drops.  It can be used in any CrateCollide.

; HumanOnly = Yes let's the crate only be picked up by Humans, mostly for scripted stuff

; PickupScience   Forces the player owning the unit trying to get the crate to have a certain science.

; Only some of these have CollideData.
;Behavior = HealCrateCollide ; A crate that heals everything you own, no Data
;    ;nothing
;End ; 

;Behavior = MoneyCrateCollide ; A crate that gives x dollars
;;  MoneyProvided = 2000
;End

;  Behavior = SalvageCrateCollide
;    WeaponChance = 100%           ; If we are WeaponSalvager, this is the chance we get a WeaponSet upgrade if not fully upgraded
;    LevelChance = 25%             ; Either we are just a regular Salvager, or we are fully upgraded.  This is the chance we gain a level
;    MoneyChance = 75%             ; And this is the chance we get money.  Level + Money = 100%.  Weapon is an idependant FirstChance
;    MinMoney = 25                 ; If we get money, this is how much we get.  Make them different to get a random range.
;    MaxMoney = 75
;  End ; A crate specific to the SALVAGER type units

;Behavior = ShroudCrateCollide ; A crate that reveals the whole shroud on the map, no Data

;Behavior = UnitCrateCollide ; A crate that provides n units of type x
;;  UnitCount = 1
;  UnitName = AmericaTankCrusader
;End

;Behavior = VeterancyCrateCollide ; A crate that gives everyone within n distance a level if they are trainable
;;  EffectRange = 20
;End

; ***Here is a default crate that just needs its Model filled out, and one appropriate Collide module plugged in

;Object CrateTemplate
;  ; *** ART Parameters ***
;  Draw = W3DModelDraw
;;    DefaultConditionState
;      Model = TempBldgSm        ;***Plug model here
;    End
;  End

;  ; ***DESIGN parameters ***
;  EditorSorting   = MISC_MAN_MADE
;  MaxHealth       = 1.0
;  InitialHealth   = 1.0

;  ; *** ENGINEERING Parameters ***  
;  KindOf = CRATE
;  Behavior = MoneyCrateCollide      ;***Replace Collide module (and data if needed) here
;;    MoneyProvided = 2000
;  End
;  Geometry = BOX
;  GeometryMajorRadius = 4.0
;  GeometryMinorRadius = 4.0
;  GeometryHeight = 4.0     
;  GeometryIsSmall = Yes    

;End

; -=-=-=-=-=-=-=-=- END EXAMPLE -=-=-=-=-=-=-=-=-


; ----------------------------------------------- Crate Data --------------------------------------


CrateData SalvageCrateData
  CreationChance = 1.0
  KilledByType = SALVAGER
  KillerScience = SCIENCE_GLA ; Killed by a salvager unit owned by a GLA player

  CrateObject = SalvageCrate 1.0
End

CrateData EliteTankCrateData
  CreationChance = .75
  VeterancyLevel = ELITE

  CrateObject = 1000DollarCrate .75
  CrateObject = SmallLevelUpCrate .25
End

CrateData HeroicTankCrateData
  CreationChance = 1.0
  VeterancyLevel = HEROIC

  CrateObject = 2500DollarCrate .50
  CrateObject = MediumLevelUpCrate .25
  CrateObject = 2FreeCrusadersCrate .25
End


;------------------------------------------------- Map specific CrateData 
;------------------------------------------- GLA02
CrateData GLA02_Always100DollarCrate
  CreationChance = 1.0
  CrateObject = 100DollarCrate 1.0
  OwnedByMaker = Yes
End

CrateData GLA02_Always200DollarCrate
  CreationChance = 1.0
  CrateObject = 200DollarCrate 1.0
  OwnedByMaker = Yes
End

CrateData GLA02_Always1000DollarCrate
  CreationChance = 1.0
  CrateObject = 1000DollarCrate 1.0
  OwnedByMaker = Yes
End

CrateData GLA02_Always1500DollarCrate
  CreationChance = 1.0
  CrateObject = 1500DollarCrate 1.0
  OwnedByMaker = Yes
End

CrateData GLA02_Always2500DollarCrate
  CreationChance = 1.0
  CrateObject = 2500DollarCrate 1.0
  OwnedByMaker = Yes
End



;------------------------------------------------ Crate Objects -----------------------------------

; -----------------------------------------------------------------------------
Object SalvageCrate
  ; *** ART Parameters ***
  Draw = W3DScienceModelDraw ModuleTag_01
    RequiredScience = SCIENCE_GLA ; Only GLA players and observers can see us.
    DefaultConditionState
      Model = PMJnkCrate
    End
  End

  ; ***DESIGN parameters ***
  EditorSorting   = MISC_MAN_MADE

  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE SELECTABLE ;Only Salvage crates are marked Selectable so the Mouse can interact with them and give Salvage voices.  Being dead makes them not actually selectable
  
  Behavior = SalvageCrateCollide ModuleTag_02
    ForbiddenKindOf = PROJECTILE
    PickupScience = SCIENCE_GLA   ; Only GLA players can pick this up (Draw module makes it so only they can see it)
    ;ExecuteFX = FX_CratePickup    ; FXList to play when sucessfully picked up

    WeaponChance = 100%           ; If we are WeaponSalvager, this is the chance we get a WeaponSet upgrade if not fully upgraded
    LevelChance = 25%             ; Either we are just a regular Salvager, or we are fully upgraded.  This is the chance we gain a level
    MoneyChance = 75%             ; And this is the chance we get money.  Level + Money = 100%.  Weapon is an idependant FirstChance
    MinMoney = 25                 ; If we get money, this is how much we get.  Make them different to get a random range.
    MaxMoney = 75
  End      

  Behavior = DeletionUpdate ModuleTag_03 ; Not LifetimeUpdate, since I can't die.  This will DestroyObject me. 
    MinLifetime = 30000   
    MaxLifetime = 35000   
  End

  Geometry = BOX
  GeometryMajorRadius = 12.0
  GeometryMinorRadius = 12.0
  GeometryHeight = 12.0     
  GeometryIsSmall = Yes    
  Shadow          = SHADOW_VOLUME

End

; -----------------------------------------------------------------------------

Object 1000DollarCrate
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMUNCrate03        ;***Plug model here
      ParticleSysBone = FX1 glitter2  
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE
  TransportSlotCount = 1                 

  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = MoneyCrateCollide      ModuleTag_ForbiddenChanges
    ForbiddenKindOf = PROJECTILE
    MoneyProvided = 1000
    ;ExecuteFX = FX_CratePickup
    ExecuteAnimation       = MoneyPickUp
    ExecuteAnimationTime   = 4.0    ; In seconds
    ExecuteAnimationZRise  = 15.0   ; Z world units per second to rise
    ExecuteAnimationFades  = Yes    ; Animation does/doesn't fade out        
  End

  Behavior = SquishCollide ModuleTag_03
    ;nothing
  End

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 75.0
  End
  
  Shadow              = SHADOW_VOLUME
  Geometry = BOX
  GeometryMajorRadius = 12.0
  GeometryMinorRadius = 12.0
  GeometryHeight = 12.0     
  GeometryIsSmall = Yes    

End

; -----------------------------------------------------------------------------
Object 2500DollarCrate
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMUNCrate03        ;***Plug model here
      ParticleSysBone = FX1 glitter2  
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE
  TransportSlotCount = 1                 

  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = MoneyCrateCollide     ModuleTag_ForbiddenChanges 
    ForbiddenKindOf = PROJECTILE
    MoneyProvided = 2500
    ;ExecuteFX = FX_CratePickup
    ExecuteAnimation       = MoneyPickUp
    ExecuteAnimationTime   = 4.0    ; In seconds
    ExecuteAnimationZRise  = 15.0   ; Z world units per second to rise
    ExecuteAnimationFades  = Yes    ; Animation does/doesn't fade out           
  End

  Behavior = SquishCollide ModuleTag_03
    ;nothing
  End
  Shadow              = SHADOW_VOLUME
  Geometry = BOX
  GeometryMajorRadius = 12.0
  GeometryMinorRadius = 12.0
  GeometryHeight = 12.0     
  GeometryIsSmall = Yes    

End

; -----------------------------------------------------------------------------
Object SmallLevelUpCrate
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMCrates        ;***Plug model here
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE

  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = VeterancyCrateCollide       ModuleTag_02
    ForbiddenKindOf = PROJECTILE
    EffectRange = 100
    ;ExecuteFX = FX_CratePickup
  End
  Geometry = BOX
  GeometryMajorRadius = 4.0
  GeometryMinorRadius = 4.0
  GeometryHeight = 4.0     
  GeometryIsSmall = Yes    
  Shadow              = SHADOW_VOLUME
End

; -----------------------------------------------------------------------------
Object MediumLevelUpCrate
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMCrates        ;***Plug model here
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE

  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = VeterancyCrateCollide       ModuleTag_02
    ForbiddenKindOf = PROJECTILE
    ;ExecuteFX = FX_CratePickup
    EffectRange = 250
  End
  Geometry = BOX
  GeometryMajorRadius = 4.0
  GeometryMinorRadius = 4.0
  GeometryHeight = 4.0     
  GeometryIsSmall = Yes    
  Shadow              = SHADOW_VOLUME
End

; -----------------------------------------------------------------------------
Object 2FreeCrusadersCrate
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMCrates        ;***Plug model here
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE


  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = UnitCrateCollide ModuleTag_02
    ForbiddenKindOf = PROJECTILE
    ;ExecuteFX = FX_CratePickup
    UnitCount = 2
    UnitName = CINE_AmericaTankCrusader
  End
  Shadow              = SHADOW_VOLUME
  Geometry = BOX
  GeometryMajorRadius = 4.0
  GeometryMinorRadius = 4.0
  GeometryHeight = 4.0     
  GeometryIsSmall = Yes    

End

; -----------------------------------------------------------------------------
Object 2FreeBattleMastersCrate
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMCrates        ;***Plug model here
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE


  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = UnitCrateCollide ModuleTag_02
    ForbiddenKindOf = PROJECTILE
    ;ExecuteFX = FX_CratePickup
    UnitCount = 2
    UnitName = ChinaTankBattleMaster
  End
  Shadow              = SHADOW_VOLUME
  Geometry = BOX
  GeometryMajorRadius = 4.0
  GeometryMinorRadius = 4.0
  GeometryHeight = 4.0     
  GeometryIsSmall = Yes    

End

; -----------------------------------------------------------------------------
Object 2FreeScorpionsCrate
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMCrates        ;***Plug model here
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE


  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = UnitCrateCollide ModuleTag_02
    ForbiddenKindOf = PROJECTILE
    ;ExecuteFX = FX_CratePickup
    UnitCount = 2
    UnitName = GLATankScorpion
  End
  Shadow              = SHADOW_VOLUME
  Geometry = BOX
  GeometryMajorRadius = 4.0
  GeometryMinorRadius = 4.0
  GeometryHeight = 4.0     
  GeometryIsSmall = Yes    

End

; -----------------------------------------------------------------------------
;RTO Look Here
; -----------------------------------------------------------------------------

; -----------------------------------------------------------------------------
Object 100DollarCrate
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMUNCrate03        ;***Plug model here
      ParticleSysBone = FX1 glitter2 
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE
  TransportSlotCount = 1                 

  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = MoneyCrateCollide      ModuleTag_ForbiddenChanges
    ForbiddenKindOf = PROJECTILE
    MoneyProvided = 100
    ;ExecuteFX = FX_CratePickup
    ExecuteAnimation       = MoneyPickUp
    ExecuteAnimationTime   = 4.0    ; In seconds
    ExecuteAnimationZRise  = 15.0   ; Z world units per second to rise
    ExecuteAnimationFades  = Yes    ; Animation does/doesn't fade out            
  End

  Behavior = SquishCollide ModuleTag_03
    ;nothing
  End

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 75.0
  End
  Shadow              = SHADOW_VOLUME
  Geometry = BOX
  GeometryMajorRadius = 12.0
  GeometryMinorRadius = 12.0
  GeometryHeight = 12.0     
  GeometryIsSmall = Yes    

End

; -----------------------------------------------------------------------------

Object 200DollarCrate
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMUNCrate03        ;***Plug model here
      ParticleSysBone = FX1 glitter2 
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE
  TransportSlotCount = 1                 

  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = MoneyCrateCollide      ModuleTag_ForbiddenChanges
    ForbiddenKindOf = PROJECTILE
    MoneyProvided = 200
    ;ExecuteFX = FX_CratePickup
    ExecuteAnimation       = MoneyPickUp
    ExecuteAnimationTime   = 4.0    ; In seconds
    ExecuteAnimationZRise  = 15.0   ; Z world units per second to rise
    ExecuteAnimationFades  = Yes    ; Animation does/doesn't fade out            
  End

  Behavior = SquishCollide ModuleTag_03
    ;nothing
  End

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 75.0
  End

  Geometry = BOX
  GeometryMajorRadius = 12.0
  GeometryMinorRadius = 12.0
  GeometryHeight = 12.0     
  GeometryIsSmall = Yes    
  Shadow              = SHADOW_VOLUME
End

; -----------------------------------------------------------------------------
Object 100DollarCrateForBuildings
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMUNCrate03        ;***Plug model here
      ParticleSysBone = FX1 glitter2 
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE
  TransportSlotCount = 1                 

  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = MoneyCrateCollide      ModuleTag_ForbiddenChanges
    ForbiddenKindOf = PROJECTILE
    MoneyProvided = 100
    BuildingPickup = Yes
    ;ExecuteFX = FX_CratePickup
    ExecuteAnimation       = MoneyPickUp
    ExecuteAnimationTime   = 4.0    ; In seconds
    ExecuteAnimationZRise  = 15.0   ; Z world units per second to rise
    ExecuteAnimationFades  = Yes    ; Animation does/doesn't fade out            
  End

  Behavior = SquishCollide ModuleTag_03
    ;nothing
  End

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 75.0
  End

  Geometry = BOX
  GeometryMajorRadius = 12.0
  GeometryMinorRadius = 12.0
  GeometryHeight = 12.0     
  GeometryIsSmall = Yes    
  Shadow              = SHADOW_VOLUME
End

; -----------------------------------------------------------------------------
Object SupplyDropZoneCrate 
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMUNCrate03    ;***Plug model here
      Animation = PMUNCrate03.PMUNCrate03    
      AnimationMode = LOOP
      ParticleSysBone = FX1 glitter2 
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE
  TransportSlotCount = 1                 

  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = MoneyCrateCollide      ModuleTag_ForbiddenChanges
    ForbiddenKindOf = PROJECTILE
    MoneyProvided = 250
    UpgradedBoost = UpgradeType:Upgrade_AmericaSupplyLines  Boost:25
    BuildingPickup = Yes
    ;ExecuteFX = FX_CratePickup
    ExecuteAnimation       = MoneyPickUp
    ExecuteAnimationTime   = 4.0    ; In seconds
    ExecuteAnimationZRise  = 15.0   ; Z world units per second to rise
    ExecuteAnimationFades  = Yes    ; Animation does/doesn't fade out            
  End

  Behavior = SquishCollide ModuleTag_03
    ;nothing
  End

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 75.0
  End

  Geometry = BOX
  GeometryMajorRadius = 12.0
  GeometryMinorRadius = 12.0
  GeometryHeight = 12.0     
  GeometryIsSmall = Yes    
  Shadow              = SHADOW_VOLUME
End

; -----------------------------------------------------------------------------
Object 1500DollarCrate
  ; *** ART Parameters ***
  Draw = W3DModelDraw ModuleTag_01
    DefaultConditionState
      Model = PMUNCrate03        ;***Plug model here
      ParticleSysBone = FX1 glitter2  
    End
  End

  ; ***DESIGN parameters ***
  DisplayName      = OBJECT:Crate
  EditorSorting   = MISC_MAN_MADE
  TransportSlotCount = 1                 

  ; *** ENGINEERING Parameters ***  
  KindOf = PARACHUTABLE CRATE 
  Behavior = MoneyCrateCollide      ModuleTag_ForbiddenChanges
    ForbiddenKindOf = PROJECTILE
    MoneyProvided = 1500
    ;ExecuteFX = FX_CratePickup
    ExecuteAnimation       = MoneyPickUp
    ExecuteAnimationTime   = 4.0    ; In seconds
    ExecuteAnimationZRise  = 15.0   ; Z world units per second to rise
    ExecuteAnimationFades  = Yes    ; Animation does/doesn't fade out            
  End

  Behavior = SquishCollide ModuleTag_03
    ;nothing
  End

  Behavior = PhysicsBehavior ModuleTag_04
    Mass = 75.0
  End

  Geometry = BOX
  GeometryMajorRadius = 12.0

  GeometryMinorRadius = 12.0
  GeometryHeight = 12.0     
  GeometryIsSmall = Yes    
  Shadow              = SHADOW_VOLUME
End


