Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ArtifactWeaponBasePlacer extends ArtifactCraftWeapon;
- struct PossibleWeaponsStruct
- {
- var() class<Weapon> WeaponClass;
- var() int Requirement;
- };
- var array< PossibleWeaponsStruct > PossibleWeapons;
- var int Resources;
- var int iLastSelected;
- var float AltLastUseTime;
- function GiveTo( pawn Other, optional Pickup Source )
- {
- local int i,k,j,L;
- local class<Weapon> WepClass;
- local bool bDuplicate;
- local ArtifactWeaponBasePlacerPickup WBPPickup;
- //log (self $ " Hi ");
- Instigator = Other;
- if ( Other.AddInventory( Self ) )
- {
- //log (self $ " Hi Hi ");
- GotoState('');
- WBPPickup = ArtifactWeaponBasePlacerPickup(Source);
- if (WBPPickup != None)
- {
- for (i=0; i < WBPPickup.StoredPossibleWeapons.length; i++)
- {
- L=PossibleWeapons.length;
- bDuplicate = false;
- WepClass = WBPPickup.StoredPossibleWeapons[i].WeaponClass;
- for(j=0; j < L ; j++)
- {
- if (WepClass==PossibleWeapons[j].WeaponClass)
- {
- bDuplicate = true;
- if (WBPPickup.StoredPossibleWeapons[i].Requirement < PossibleWeapons[j].Requirement)
- PossibleWeapons[j].Requirement = WBPPickup.StoredPossibleWeapons[i].Requirement;
- j = L;
- }
- }
- if (!bDuplicate && WBPPickup.StoredPossibleWeapons[i].WeaponClass != None)
- {
- PossibleWeapons.length = PossibleWeapons.length + 1;
- //PossibleWeapons[k] = WBPPickup.StoredPossibleWeapons[i];
- PossibleWeapons[k].WeaponClass = WBPPickup.StoredPossibleWeapons[i].WeaponClass;
- PossibleWeapons[k].Requirement = WBPPickup.StoredPossibleWeapons[i].Requirement;
- k++;
- }
- }
- //log (self $ " GT Resources1= " $ Resources $ " StoredResources1= " $ WBPPickup.StoredResources);
- Resources = WBPPickup.StoredResources;
- //log (self $ " GT Resources2= " $ Resources $ " StoredResources2= " $ WBPPickup.StoredResources);
- }
- }
- else
- {
- log (self $ " ded ");
- Destroy();
- }
- }
- function bool HandlePickupQuery(Pickup Item)
- {
- local int i,k,j,L,StartL;
- local class<Weapon> WepClass;
- local bool bDuplicate;
- local ArtifactWeaponBasePlacerPickup Source;
- if (item.InventoryType == class)
- {
- Source = ArtifactWeaponBasePlacerPickup(Item);
- if (Source != None)
- {
- k = PossibleWeapons.length;
- StartL = k;
- //log (self $ " HPQ Resources1= " $ Resources $ " StoredResources1= " $ Source.StoredResources);
- Resources += Source.StoredResources;
- //log (self $ " HPQ Resources2= " $ Resources $ " StoredResources2= " $ Source.StoredResources);
- for( i=0; i < Source.StoredPossibleWeapons.length; i++ )
- {
- L=PossibleWeapons.length;
- bDuplicate = false;
- WepClass = Source.StoredPossibleWeapons[i].WeaponClass;
- for(j=0; j < L ; j++)
- {
- if (WepClass==PossibleWeapons[j].WeaponClass)
- {
- bDuplicate = true;
- if (Source.StoredPossibleWeapons[i].Requirement < PossibleWeapons[j].Requirement)
- PossibleWeapons[j].Requirement = Source.StoredPossibleWeapons[i].Requirement;
- j = L;
- }
- }
- if (!bDuplicate && Source.StoredPossibleWeapons[i].WeaponClass != None)
- {
- PossibleWeapons.length = PossibleWeapons.length + 1;
- PossibleWeapons[k].WeaponClass = Source.StoredPossibleWeapons[i].WeaponClass;
- PossibleWeapons[k].Requirement = Source.StoredPossibleWeapons[i].Requirement;
- k++;
- }
- }
- }
- if ( (k > 0 && k > StartL) || (Source.StoredResources != 0) )
- {
- Item.AnnouncePickup(Pawn(Owner));
- Item.SetRespawn();
- return true;
- }
- else
- return true;
- }
- if ( Inventory == None ) // Next in inventory chain
- return false;
- return Inventory.HandlePickupQuery(Item);
- }
- function Activate()
- {
- local int i;
- Instigator.ClientMessage(" Available Resources: " $ Resources);
- for( i=0; i < PossibleWeapons.length; i++ )
- {
- Instigator.ClientMessage("[" $ i $ "] = " $ string(PossibleWeapons[i].WeaponClass) $ " Requirement= " $ PossibleWeapons[i].Requirement ); //.Default.FriendlyName);
- }
- }
- function bool GetUsability()
- {
- //Can't use this if you don't have enough adrenaline...
- if (Instigator.Controller.Adrenaline < GetCost() )
- {
- Instigator.ReceiveLocalizedMessage(MessageClass, GetCost(), None, None, Class);
- return false;
- }
- return true;
- }
- function AltActivate(optional string Param)
- {
- local float TimeDelta;
- local int ISelected;
- local class<Weapon> TempWClass;
- TimeDelta = Level.TimeSeconds - AltLastUseTime;
- if (Level.TimeSeconds - AltLastUseTime < UseDelay)
- {
- Instigator.ReceiveLocalizedMessage(MessageClass, 5000 + UseDelay - TimeDelta, None, None, Class);
- bActive = false;
- GotoState('');
- return;
- }
- AltLastUseTime = Level.TimeSeconds;
- if (Param != "" &&( strcmp(Param, "0") == 0 || int(Param) > 0 ))
- {
- ISelected = Min(int(Param), PossibleWeapons.length);
- if (PossibleWeapons[ISelected].Requirement <= Resources)
- {
- TempWClass = PossibleWeapons[ISelected].WeaponClass;
- if (TempWClass != None)
- {
- iLastSelected = ISelected;
- WeaponClass = TempWClass;
- Super.AltActivate();
- }
- }
- }
- }
- function Timer()
- {
- local PickUp WeaponPickUp;
- if (A.myPickUp != None)
- WeaponPickUp = A.myPickUp;
- if (WeaponPickUp != None)
- {
- ModifyPickUp (WeaponPickUp);
- //cost
- if (!bIsFree && bSuccess)
- PayUp ();
- }
- }
- function ModifyPickup (PickUp TMWeaponPickUp)
- {
- TMWeaponPickUp.GotoState( 'Pickup' );
- TMWeaponPickUp.RespawnEffect();
- TMWeaponPickUp.NetUpdateTime = Level.TimeSeconds - 1;
- TMWeaponPickUp.bHidden = false;
- bSuccess = true;
- }
- function PayUp ()
- {
- Instigator.Controller.Adrenaline -= GetCost();
- if (Instigator.Controller.Adrenaline < 0)
- Instigator.Controller.Adrenaline = 0;
- Resources -= PossibleWeapons[iLastSelected].Requirement;
- }
- exec function TossArtifact()
- {
- Super(RPGArtifact).TossArtifact();
- }
- function DropFrom(vector StartLocation)
- {
- local ArtifactWeaponBasePlacerPickup P;
- local int i;
- if (bActive)
- GotoState('');
- if ( Instigator != None )
- {
- DetachFromPawn(Instigator);
- Instigator.DeleteInventory(self);
- }
- SetDefaultDisplayProperties();
- Instigator = None;
- StopAnimating();
- GotoState('');
- Class'ArtifactWeaponBasePlacerPickup'.default.bInternalListOnly = true;
- P = ArtifactWeaponBasePlacerPickup(spawn(PickupClass,,,StartLocation));
- Class'ArtifactWeaponBasePlacerPickup'.default.bInternalListOnly = false;
- if ( P == None )
- {
- destroy();
- return;
- }
- //some properties to transfer
- P.bInternalListOnly = true;
- P.StoredResources = Resources;
- P.StoredPossibleWeapons.length = PossibleWeapons.length;
- for (i=0; i< PossibleWeapons.length ;i++)
- {
- P.StoredPossibleWeapons[i].WeaponClass = PossibleWeapons[i].WeaponClass;
- P.StoredPossibleWeapons[i].Requirement = PossibleWeapons[i].Requirement;
- }
- P.InitDroppedPickupFor(self);
- P.Velocity = Velocity;
- Velocity = vect(0,0,0);
- }
- defaultproperties
- {
- ChangelingClass=Class'SillyRPG.XIsAChangeling'
- AbilityLevel=1
- UseDelay=2
- WeaponClass=None
- bIsFree=false
- bIsDropped=false
- MinActivationTime=0.000001
- ActivateSound=Sound'WeaponSounds.BaseGunTech.BReload2'
- PickupClass=Class'SillyRPGv1-1.ArtifactWeaponBasePlacerPickup'
- IconMaterial=Texture'ME_RPGExpansion.Icons.CraftSpiderMines'
- ItemName="Weapon Base Placer"
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement