123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- // I know the filename is stupid, but it's what the other files in this structure use..
- // And I can't really make it "class Clothing_Base extends Clothing"
- // since that will conflict with config and other parts of script and break mods :c
- class Clothing extends Clothing_Base
- {
- override bool IsClothing()
- {
- return true;
- }
-
- override bool CanHaveWetness()
- {
- return true;
- }
-
- //! Used for 'glasses' (and other colored layers triggered by attach/detach in the InventorySlots.EYEWEAR)
- int GetGlassesEffectID()
- {
- return -1;
- }
-
- //----------------------------------------------------------------
- // GameplayWidgetEffects
- array<int> GetEffectWidgetTypes()
- {
- return null;
- }
-
- // Conditions
- override bool CanPutInCargo( EntityAI parent )
- {
- if ( !super.CanPutInCargo( parent ) )
- return false;
-
- return !parent || CanPutInCargoClothingConditions( parent );
- }
-
- bool CanPutInCargoClothingConditions( EntityAI parent )
- {
- bool is_hidden_stash_exception = false;
-
- if ( parent.IsInherited( UndergroundStash ) )
- is_hidden_stash_exception = true;
-
- if ( GetNumberOfItems() == 0 || !parent || parent.IsMan() || is_hidden_stash_exception )
- {
- EntityAI cargoParent = parent.GetHierarchyParent();
- ClothingBase parentClothing = ClothingBase.Cast(parent);
- if (cargoParent)
- return !(parent.IsClothing() && cargoParent.IsClothing()) || ( parentClothing && parentClothing.SmershException(cargoParent) );
-
- return true;
- }
-
- return false;
- }
-
- override bool CanReceiveItemIntoCargo( EntityAI item )
- {
- if (!super.CanReceiveItemIntoCargo(item))
- return false;
-
- return CanReceiveItemIntoCargoClothingConditions( item );
- }
-
- bool CanReceiveItemIntoCargoClothingConditions( EntityAI item )
- {
- EntityAI hierarchyParent = GetHierarchyParent();
- return !hierarchyParent || hierarchyParent.IsMan() || SmershException(hierarchyParent);
- }
-
- //Kind of a hack but I don't have enough time left to do larger scale reworks, sorry
- bool SmershException(EntityAI hierarchyParent)
- {
- EntityAI hp = hierarchyParent.GetHierarchyParent();
- if (hp)
- {
- if (!hp.IsMan())
- return false;
- }
-
- return IsInherited(SmershBag) && hierarchyParent.IsInherited(SmershVest);
- }
-
- override bool CanLoadItemIntoCargo(EntityAI item)
- {
- if (!super.CanLoadItemIntoCargo(item))
- return false;
-
- return CanLoadItemIntoCargoClothingConditions(item);
- }
-
- bool CanLoadItemIntoCargoClothingConditions(EntityAI item)
- {
- EntityAI parent = GetHierarchyParent();
-
- if ( parent && parent.IsInherited( UndergroundStash ) )
- return true;
-
- return !parent || parent.IsMan() || SmershException(parent);
- }
-
- //Method used to specify if a piece of eyeware can be worn under a gas mask
- //! deprecated
- bool CanWearUnderMask(EntityAI parent)
- {
- return true;
- }
-
- // -------------------------------------------------------------------------
- override void EEHealthLevelChanged(int oldLevel, int newLevel, string zone)
- {
- super.EEHealthLevelChanged(oldLevel, newLevel, zone);
- if ( !GetGame().IsDedicatedServer() )
- {
- PlayerBase player_owner = PlayerBase.Cast(GetHierarchyParent());
-
- if( player_owner )
- {
- if( player_owner.m_CorpseState != 0 )
- {
- GetGame().GetCallQueue( CALL_CATEGORY_GUI ).CallLater( player_owner.UpdateCorpseState, 0, false);
- }
- }
- }
- }
-
- override void SwitchItemSelectionTextureEx(EItemManipulationContext context, Param par = null)
- {
- super.SwitchItemSelectionTextureEx(context, par);
-
- Param1<PlayerBase> data = Param1<PlayerBase>.Cast(par);
- if (!data)
- {
- return;
- }
-
- PlayerBase player = data.param1;
-
- int personality = GetHiddenSelectionIndex("personality");
- if (personality >= 0)
- {
- string tone_mat = player.m_EmptyGloves.GetHiddenSelectionsMaterials().Get(0);
- string tone_texture;
-
- if (player.m_CorpseState > PlayerConstants.CORPSE_STATE_FRESH)
- {
- tone_texture = player.m_DecayedTexture;
- }
- else
- {
- tone_texture = player.m_EmptyGloves.GetHiddenSelectionsTextures().Get(0);
- }
-
- SetObjectMaterial( personality, tone_mat );
- SetObjectTexture( personality, tone_texture );
- }
- }
- };
- //////////////////////
- //intermediate types//
- //////////////////////
- class Belt_Base : Clothing {};
- class Backpack_Base : Clothing {};
- class Glasses_Base : Clothing
- {
- override protected void InitGlobalExclusionValues()
- {
- super.InitGlobalExclusionValues();
-
- AddSingleExclusionValueGlobal(EAttExclusions.EXCLUSION_GLASSES_REGULAR_0);
- }
- };
- class Gloves_Base : Clothing {};
- class HeadGear_Base : Clothing {};
- class Mask_Base : Clothing
- {
- override protected set<int> GetAttachmentExclusionInitSlotValue(int slotId)
- {
- set<int> ret = super.GetAttachmentExclusionInitSlotValue(slotId);
- if (slotId == InventorySlots.MASK)
- {
- ret.Insert(EAttExclusions.SHAVING_MASK_ATT_0);
- }
- return ret;
- }
- };
- class Pants_Base : Clothing {};
- class Shoes_Base : Clothing {};
- class Top_Base : Clothing {};
- class Vest_Base : Clothing {};
- typedef Clothing ClothingBase;
|