2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## freeftf  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Copyright (C) 2024  Patrick_Pluto  
						 
					
						
							
								
									
										
										
										
											2024-08-02 22:38:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								##  
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.  
						 
					
						
							
								
									
										
										
										
											2024-08-02 22:38:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								##  
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.  
						 
					
						
							
								
									
										
										
										
											2024-08-02 22:38:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								##  
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## You should have received a copy of the GNU General Public License along with this program.  If not, see <https://www.gnu.org/licenses/>.  
						 
					
						
							
								
									
										
										
										
											2024-08-02 22:38:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 20:13:42 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								extends  Node  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  DEFAULT_SERVER_IP  =  " 127.0.0.1 "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  PORT  =  36969  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  MAX_CONNECTIONS  =  16  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  players  =  { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  players_numbered  =  [ ]  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  label  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  map  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  character  =  preload ( " res://objects/player.tscn " )  
						 
					
						
							
								
									
										
										
										
											2024-08-04 13:41:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  is_server  =  false  
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  first_joined  =  true  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  game_master  =  " debug "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  map_name  =  " mansion "  
						 
					
						
							
								
									
										
										
										
											2024-08-06 23:28:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  offline  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  _ready ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									offline  =  multiplayer . multiplayer_peer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									multiplayer . peer_disconnected . connect ( _on_player_disconnected ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									multiplayer . server_disconnected . connect ( _on_server_disconnected ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  _on_player_disconnected ( id ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									players . erase ( id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( players . is_empty ( )  or  id  ==  game_master )  and  multiplayer . is_server ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										get_tree ( ) . quit ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  x  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ! multiplayer . is_server ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  i  in  players_numbered : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  i  ==  id : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  current_character  =  get_tree ( ) . root . get_node ( " ./ " + map_name + " /player " + str ( x ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  current_character . hp  ==  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Game . dead  -=  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												elif  current_character . is_frozen : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Game . frozen  -=  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												elif  current_character . beast : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Game . player_escaped  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Game . players  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Game . players  -=  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												current_character . free ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											x  +=  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  _on_server_disconnected ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Server . reset ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Game . reset ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									get_tree ( ) . change_scene_to_file ( " res://menus/main_menu.tscn " ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 20:13:42 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-03 22:24:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  reset ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									players  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									players_numbered  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									label  =  null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									map  =  null 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-04 13:41:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									is_server  =  false 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-06 23:28:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									first_joined  =  true 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-06 11:13:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									game_master  =  " debug " 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-03 22:24:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									character  =  preload ( " res://objects/player.tscn " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  multiplayer  !=  null : 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-06 23:28:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										multiplayer . multiplayer_peer  =  offline 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-03 22:24:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 20:13:42 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  join_game ( ip ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  peer  =  ENetMultiplayerPeer . new ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  error  =  peer . create_client ( ip ,  PORT ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  error : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									multiplayer . multiplayer_peer  =  peer 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  create_game ( ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  peer  =  ENetMultiplayerPeer . new ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  error  =  peer . create_server ( PORT ,  MAX_CONNECTIONS ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  error : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									multiplayer . multiplayer_peer  =  peer 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  _process ( delta ) :  
						 
					
						
							
								
									
										
										
										
											2024-08-06 23:28:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  multiplayer . is_server ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										make_host . rpc ( game_master ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@ rpc ( " authority " , " call_remote " , " reliable " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  make_host ( id ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									first_joined  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									game_master  =  id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  str ( multiplayer . get_unique_id ( ) )  ==  str ( game_master ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										is_server  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										is_server  =  false 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-04 13:41:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@ rpc ( " any_peer " ,  " call_remote " ,  " reliable " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  sync_playerlist ( text ,  host ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ! multiplayer . is_server ( )  and  ( multiplayer . get_remote_sender_id ( )  ==  game_master  or  multiplayer . get_remote_sender_id ( )  ==  0 ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										get_tree ( ) . root . get_node ( " create/player_list/list " ) . text  =  text 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 20:13:42 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-04 13:41:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@ rpc ( " any_peer " ,  " call_local " ,  " reliable " )  
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  send_playerinfo ( player_name ,  id ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ! multiplayer . is_server ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  is_server : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  done  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											players [ id ]  =  player_name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											label  =  get_tree ( ) . root . get_node ( " create/player_list/list " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											label . text  =  " " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  w  in  players : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  done  ==  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													label . text  =  str ( label . text  + " \n "  +  players [ w ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													label . text  =  players [ w ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													done  =  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else : 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-06 23:28:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										players [ id ]  =  player_name 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  first_joined : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											first_joined  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											game_master  =  id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											is_server  =  true 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 22:30:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 20:13:42 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@ rpc ( " any_peer " ,  " call_local " ,  " reliable " )  
						 
					
						
							
								
									
										
										
										
											2024-08-02 20:13:42 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  start_game ( server_players ) :  
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ! multiplayer . is_server ( )  and  ( multiplayer . get_remote_sender_id ( )  ==  game_master  or  multiplayer . get_remote_sender_id ( )  ==  0 ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										players  =  server_players 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										players_numbered  =  players . keys ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  success  =  get_tree ( ) . change_scene_to_file ( " res://maps/ " + map_name + " .tscn " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										while  ! get_tree ( ) . root . has_node ( " ./ " + map_name + " / " ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											await  get_tree ( ) . create_timer ( 0.001 ) . timeout 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										map  =  get_tree ( ) . root . get_node ( " ./ " + map_name + " / " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  i  =  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  w  in  players : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  player  =  character . instantiate ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											player . name  =  " player "  +  str ( i ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											i  +=  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											player . position . z  =  - i * 2.5 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											player . position . y  =  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											map . add_child ( player ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  Server . is_server : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  random  =  randi ( )  %  Server . players . size ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sync_beast . rpc ( random ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Game . apply_settings ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 20:13:42 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@ rpc ( " any_peer " ,  " call_remote " ,  " unreliable " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  sync_player ( node_name ,  position ,  rotation ) :  
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ! multiplayer . is_server ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  current_character  =  get_tree ( ) . root . get_node ( " ./ " + map_name + " / " + node_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										current_character . position  =  position 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										current_character . rotation  =  rotation 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-06 23:28:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@ rpc ( " any_peer " ,  " call_remote " ,  " unreliable " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  sync_hammer ( node_name ,  rotation ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ! multiplayer . is_server ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  current_character  =  get_tree ( ) . root . get_node ( " ./ " + map_name + " / " + node_name + " /hammer " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										current_character . rotation  =  rotation 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-02 22:30:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@ rpc ( " any_peer " ,  " call_local " ,  " reliable " )  
						 
					
						
							
								
									
										
										
										
											2024-08-02 22:30:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  sync_computers ( node_name ,  current ) :  
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ! multiplayer . is_server ( )  and  ( multiplayer . get_remote_sender_id ( )  ==  game_master  or  multiplayer . get_remote_sender_id ( )  ==  0 ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  current_character  =  get_tree ( ) . root . get_node ( " ./ " + map_name + " /computers/ " + node_name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										current_character . current  =  current 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-03 16:10:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								@ rpc ( " any_peer " ,  " call_local " ,  " reliable " )  
						 
					
						
							
								
									
										
										
										
											2024-08-03 16:10:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  sync_beast ( player ) :  
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ! multiplayer . is_server ( )  and  ( multiplayer . get_remote_sender_id ( )  ==  game_master  or  multiplayer . get_remote_sender_id ( )  ==  0 ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										while  ! get_tree ( ) . root . has_node ( " ./ " + map_name + " /player " + str ( player ) ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											await  get_tree ( ) . create_timer ( 0.001 ) . timeout 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  current_character  =  get_tree ( ) . root . get_node ( " ./ " + map_name + " /player " + str ( player ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										current_character . beast_init ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-03 16:10:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								@ rpc ( " any_peer " ,  " call_local " ,  " reliable " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  player_hit ( target ,  beast ) :  
						 
					
						
							
								
									
										
										
										
											2024-08-05 22:35:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ! multiplayer . is_server ( ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										target  =  get_tree ( ) . root . get_node ( " ./ " + map_name + " / " + target ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										beast  =  get_tree ( ) . root . get_node ( " ./ " + map_name + " / " + beast ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ! target . is_frozen : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											target . captured ( beast ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											beast . got_one ( target ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-06 23:28:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
									
										
										
										
											2024-08-03 16:10:14 +02:00