
    @b                         S SK Jr  S SKJrJrJr  S SKrSSKJrJ	r	J
r
JrJr  S r/ SQr\ " S S	5      5       r " S
 S\	5      r\R"                  " \" 5       5        g)    )	dataclass)OptionalListAnyN   )EnabledSaveTypeSDKModHookGameOptionManagerc                     U R                   UR                   -
  S-  U R                  UR                  -
  S-  -   U R                  UR                  -
  S-  -   S-  $ )Nr   g      ?)XYZ)abs     ^Z:\mnt\Skyabridged\SteamLibrary\steamapps\common\Borderlands 2\sdk_mods\NPCRevives\__init__.pydistr   
   sJ    SS133Y1acc	a//13392BBsJJ    )z0GD_Tulip_DeathTrap.Character.CharClass_DeathTrapz&GD_Scorpio.Character.CharClass_ScorpiozDGD_RolandDeployableTurret.Character.CharClass_RolandDeployableTurretz.GD_Anemone_Talon.Character.CharClass_BloodwingzTGD_Nasturtium_BugMorph_Bloodhound.Character.CharClass_Nasturtium_BugMorph_Bloodhoundc                   N    \ rS rSr% \\R                     \S'   \\S'   \	\S'   Sr
g)NPCHero   mindscripted_stancestop_sequence N)__name__
__module____qualname____firstlineno__r   	unrealsdkUObject__annotations__intbool__static_attributes__r   r   r   r   r      s    
9$$
%%r   r   c            	       H  ^  \ rS rSrSrSrSrSr\R                  r
\R                  \R                  -  \R                  -  rU 4S jrS\R$                  R&                  S\S	S
4S jrU 4S jrU 4S jrS\R2                  S	\4S jrS S jrS S jr\" S5      S\R2                  S\R>                  S\R@                  S	\4S j5       r!\" S5      S\R2                  S\R>                  S\R@                  S	\4S j5       r"\" S5      S\R2                  S\R>                  S\R@                  S	\4S j5       r#\" S5      S\R2                  S\R>                  S\R@                  S	\4S j5       r$\" S5      S\R2                  S\R>                  S\R@                  S	\4S j5       r%Sr&U =r'$ )!
NPCRevives   zNPC ReviveszGet revived from friendly NPCs.Jusoz1.1c                   > [         [        U ]  5         S U l        SU l        SU l        SU l        / U l        [        R                  R                  SSU R                  SSSS	9[        R                  R                  S
SU R
                  SSSS	9[        R                  R                  SSU R                  SSSS	9/U l	        g )Ni,  i     Revive Distancez>The distance at which NPCs will revive you. 100 is roughly 1m.d   i  
   )CaptionDescriptionStartingValueMinValueMaxValue	IncrementRevive Alert DistancezKThe distance at which NPCs will alert you to revive you. 100 is roughly 1m.2   Max Reviving NPCsz?The maximum number of NPCs that will try to revive you at once.   )superr(   __init__injured_targetrevive_max_distrevive_alert_distmax_reviving_npcsreviving_npcsr   OptionsSliderself	__class__s    r   r;   NPCRevives.__init__&   s    j$(*;?$'&*&',. !!(()\"22 )  !!((/i"44 )  !!((+]"44 ) #
r   option	new_valuereturnNc                     UR                   S:X  a  X l        g UR                   S:X  a  X l        g UR                   S:X  a  X l        g g )Nr-   r6   r8   )r0   r=   r>   r?   )rD   rG   rH   s      r   ModOptionChangedNPCRevives.ModOptionChangedK   s@    >>..#, ^^66%."^^22%." 3r   c                 "   > [         TU ]  5         g N)r:   EnablerC   s    r   rO   NPCRevives.EnableS   s    r   c                 "   > [         TU ]  5         g rN   )r:   DisablerC   s    r   rR   NPCRevives.DisableV   s    r   reviver_pawnc                     U R                   (       d  g[        UR                  U R                   R                  5      U R                  :  $ )NF)r<   r   Locationr=   )rD   rT   s     r   in_revive_distNPCRevives.in_revive_distY   s8    ""L))4+>+>+G+GH4K_K___r   c                 \   U R                   (       d  g U R                   U R                   R                  l        [        R                  " 5       [        R
                  :X  a(  U R                   R                  SU R                   S5        g U R                   R                  SU R                   5        g )NTF)r<   
ControllerReviveTargetr   
GetCurrentTPSSetBeingRevived)rD   s    r   start_injured_self_revive$NPCRevives.start_injured_self_revive_   su    ""6:6I6I&&3??(//d6I6I5Q//d6I6IJr   c                     U R                   (       d  g U R                   HJ  nSUR                  l        SUR                  l        UR                  R                  U R                   5        ML     g )Nr   r9   )r<   r@   r   ScriptedStanceScriptedFocusStyleForceMoveToActor)rD   npcs     r   force_move_npcsNPCRevives.force_move_npcsi   sN    ""%%C&'CHH#*+CHH'HH%%d&9&9: &r   z3WillowGame.WillowPlayerPawn.SetupPlayerInjuredStatecallerfunctionparamsc           	        ^ [         R                  " S5      SS nU Vs/ s H9  oUR                  (       d  M  UR                  R                  T5      (       d  M7  UPM;     nnU Vs/ s H)  oUR	                  UR
                  5      [        ;  d  M'  UPM+     nnU(       d  g[        UU4S jS9nU Vs/ s H?  n[        UR                  R                  TR                  5      U R                  :  d  M=  UPMA     nnU(       d  gUSU R                    Vs/ s H  n[        UUR                  SS9PM     snU l        TU l        U R!                  5         gs  snf s  snf s  snf s  snf )zPlayer goes into FFYL state.
WillowMindr9   NTc                 X   > [        U R                  R                  TR                  5      $ rN   )r   MyWillowPawnrV   )xrh   s    r   <lambda>+NPCRevives.player_injured.<locals>.<lambda>   s    tANN<S<SU[UdUd7er   )key)r   r   r   )r!   FindAllrn   
IsFriendlyPathNameAIClass	blacklistsortedr   rV   r>   r?   r   rb   r@   r<   rf   )rD   rh   ri   rj   	all_mindsro   friendly_mindsclosests    `      r   player_injuredNPCRevives.player_injuredr   s6    %%l3AB7	%.gY..!Q^^E^E^_eEf!Yg%3^^zz!))7LT]7]!^^-ef%qgann.E.Ev)WZ^ZpZp)p1gq 6 6 67

 8!	  ! 0 0" 8
 % 	/ h^ r
s.   EEE%&EE1<E1EE z(WillowGame.WillowPlayerPawn.injured.Tickc                    ^  UT R                   L aD  T R                  5         [        U 4S jT R                   5       5      (       a  T R	                  5         g)zPlayer is in FFYL state.c              3   n   >#    U  H*  nTR                  UR                  R                  5      v   M,     g 7frN   )rW   r   rn   ).0ro   rD   s     r   	<genexpr>-NPCRevives.tick_dist_check.<locals>.<genexpr>   s+     XEW4&&qvv':':;;EWs   25T)r<   rf   anyr@   r_   )rD   rh   ri   rj   s   `   r   tick_dist_checkNPCRevives.tick_dist_check   sG     T(((  " XTEWEWXXX..0r   z3WillowGame.WillowPlayerPawn.ClearPlayerInjuredStatec                 R   XR                   La  gU R                   Hz  nUR                  R                  S5        UR                  UR                  l        UR                  R                  R                  S5        UR                  R                  SS5        M|     / U l        SU l         g)zPlayer leaves FFYL state.TScriptedFN)	r<   r@   r   ClearScriptedMover   rb   AIComponentActivateEventCheckForPerch)rD   rh   ri   rj   re   s        r   stop_injuredNPCRevives.stop_injured   s     ,,, %%CHH&&t,&)&9&9CHH#HH  ..z:HH""5$/	 &  "r   z5WillowGame.Action_GoToScriptedDestination.SetMoveNodec                     UR                   U R                   Vs/ s H  oDR                  PM     sn;   a  U R                  5         ggs  snf )z'Cancel move nodes for our reviving NPC.FT)MyWillowMindr@   r   rf   )rD   rh   ri   rj   ro   s        r   cancel_move_nodesNPCRevives.cancel_move_nodes   sC     43E3E"F3Ea663E"FF  "	 #Gs   Az&GearboxFramework.ActionSequence.Updatec                    U R                   (       d  gUR                  U R                    Vs/ s H  oDR                  PM     sn;  a  gU R                    Hx  nUR                  UR                  L d  M  UR                  (       d  M1  SUl        UR	                  5         UR                  5         UR                  5         UR                  5         Mz     U R                  5         gs  snf )zWake up idling NPCs.TF)	r@   r   r   r   InterruptLatentActionStopSequenceStopStartrf   )rD   rh   ri   rj   ro   re   s         r   update_action_sequence!NPCRevives.update_action_sequence   s     !!t7I7I&J7I!vv7I&JJ %%C""chh.$$$(-C%002'')KKMLLN & 	 'Ks   C!)rA   r<   r?   r>   r=   r@   )rI   N)(r   r   r   r    Namer1   AuthorVersionr   LoadWithSettingsSaveEnabledStater   r]   BL2AoDKSupportedGamesr;   r   rA   Baser   rK   rO   rR   r!   r"   r%   rW   r_   rf   r
   	UFunctionFStructr|   r   r   r   r   r&   __classcell__)rE   s   @r   r(   r(      s:   D3KFG&77XX(4994N#
J/}'<'<'A'A /c /VZ /`9+<+< ` `K; 

?@ %%   ))  %%	 
 
  A D 

45%%  )) %%	
 
 6" 

?@%%  )) %%	
 
 A. 

AB%%  )) %%	
 
 C 

23%%  )) %%	
 
 4r   r(   )dataclassesr   typingr   r   r   r!   ModMenur   r	   r
   r   r   r   rw   r   r(   RegisterModr   r   r   <module>r      s^    ! & &  H HK	   I IX 
  jl #r   