Init commit
This commit is contained in:
		
						commit
						6319d05b8f
					
				
					 14 changed files with 9433 additions and 0 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| *.pyc | ||||
| bins/ | ||||
| out/ | ||||
							
								
								
									
										27
									
								
								.vimrc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								.vimrc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| " %E%.%# %f:%l | ||||
| " %CLine | | ||||
| " %C %#%*[0123456789] %#| %.%# | ||||
| " %-C %#| %#~%# | ||||
| " %C %#| %m | ||||
| " %Z | ||||
| " | ||||
| " %ETraceback %.%#: | ||||
| " %C  File "%f", line %l,%.%# | ||||
| " %C    %.%# | ||||
| " %Z%m | ||||
| 
 | ||||
| " set makeprg=pwsh\ -c\ .\\Police2Gear\\build.ps1 | ||||
| set makeprg=pwsh\ -c\ .\\build.ps1 | ||||
| set efm=%-G, | ||||
|       \%trror:\ %m, | ||||
|       \%E%.%#\ %f:%l, | ||||
|       \%CLine\ \|, | ||||
|       \%C\ %#%*[0123456789]\ %#\|\ %.%#, | ||||
|       \%-C\ %#\|\ %#~%#, | ||||
|       \%C\ %#\|\ %m, | ||||
|       \%Z, | ||||
|       \%ETraceback\ %.%#:, | ||||
|       \%C\ \ File\ \"%f\"\\,\ line\ %l\\,\ %.%#, | ||||
|       \%C\ \ \ \ %.%#, | ||||
|       \%Z%m | ||||
| 
 | ||||
							
								
								
									
										3
									
								
								Loader/README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Loader/README.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| # Loader | ||||
| 
 | ||||
| This is just `init.py` with my custom files preloaded | ||||
							
								
								
									
										618
									
								
								Loader/scripts/init.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										618
									
								
								Loader/scripts/init.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,618 @@ | |||
| ########################################################## | ||||
| #                   Initialization engine | ||||
| ########################################################## | ||||
| 
 | ||||
| #    Cam = Scrap.GetEntity(Scrap.GetCam(0)) | ||||
| # Scrap.GetEntity(Scrap.GetCam(0)).CamDist = 0 | ||||
| # Scrap.GetEntity(Scrap.GetCam(0)).FreeCam = 1 | ||||
| # Scrap.GetEntity("net256").Descriptor | ||||
| # Scrap.GetEntity(Scrap.GetEntity("Player1").Target).Life = 0 | ||||
| # Scrap.GetEntity("Player1").EMICounter = 1.0 | ||||
| # Scrap.GetEntity("Player1").Upgrd01 = 3;Scrap.GetEntity("Player1").UAmmo01 = 200 | ||||
| # import Vehicles;Vehicles.ReSpawnShip("Player1") | ||||
| # Scrap.GetEntity("Player1").FireRemainTime = 10.0;Scrap.GetEntity("Player1").FireDelayTime = 0.2 | ||||
| # import Net;Net.Spectate(0,1) | ||||
| # Scrap.GetEntity("Player1").ActCtrl = "Mosquito" | ||||
| 
 | ||||
| import Scrap | ||||
| 
 | ||||
| 
 | ||||
| def log(msg): | ||||
| 	Scrap.Print("[STRNG][INIT] " + msg + "\n") | ||||
| 
 | ||||
| 
 | ||||
| log('Init started') | ||||
| 
 | ||||
| PlaySpacelords = not Scrap.IsApp(436180)  # 1 to activate the cross promotion | ||||
| ################################## | ||||
| ## All the built in functions | ||||
| ################################## | ||||
| import SInput,SNet,SWeap,SScorer,SSound,SAct,sys,SAI,SFX | ||||
| 
 | ||||
| Scrap.CreateSaveVar("CreateBertos", "0") | ||||
| Scrap.CreateSaveVar("MercsHelpDtritus", "0") | ||||
| Scrap.CreateSaveVar("RobotsControlledByBoss", "0") | ||||
| Scrap.CreateSaveVar("Player.InfiniteLives", "1") | ||||
| 
 | ||||
| # WARNING : Never import any pyhton source library at the start up! | ||||
| # | ||||
| SUPERDEALSMAPS = ["TUCZONE","QF","OM","FZ","CA"] | ||||
| OUTMAPS = ["TUCZONE","AB","COMMERCIAL","DOWNTOWN","GDB","OUTSKIRTS","SCRAPYARD"]+SUPERDEALSMAPS | ||||
| INMAPS  = ["NANO","ABINDOOR","BANK","GAMBLINDEN","ORBIT","POLICE","PRESS","TEMPLE","TOWNHALL"] | ||||
| 
 | ||||
| ExtraExecs ={ | ||||
| 	"JUNKYARD":( | ||||
| 	(Scrap.PreloadLibrary,('RustySound',          'Sound/RustySound.pyc'           )), | ||||
| 	(Scrap.PreloadLibrary,('SputnikJunkyardSound','Sound/SputnikJunkyardSound.pyc' )), | ||||
| 	(Scrap.PreloadLibrary,('MaintenanceSound',    'Sound/MaintenanceSound.pyc'     )), | ||||
| 
 | ||||
| 	(Scrap.PreloadLibrary,('Rusty',               'Chars/Rusty.pyc'                )), | ||||
| 	(Scrap.PreloadLibrary,('SputnikJunkyard',     'Chars/SputnikJunkyard.pyc'      )), | ||||
| 	(Scrap.PreloadLibrary,('Maintenance',         'Chars/Maintenance.pyc'          )), | ||||
| 				), | ||||
| 
 | ||||
| 	"GAMBLINDEN":( | ||||
| 	(Scrap.PreloadLibrary,('MercenarySound',      'Sound/MercenarySound.pyc'       )), | ||||
| 	(Scrap.PreloadLibrary,('CrazyGamblerSound',   'Sound/CrazyGamblerSound.pyc'    )), | ||||
| 
 | ||||
| 
 | ||||
| 	(Scrap.PreloadLibrary,('MercenaryA',          'Chars/MercenaryA.pyc'           )), | ||||
| 	(Scrap.PreloadLibrary,('MercenaryB',          'Chars/MercenaryB.pyc'           )), | ||||
| 	(Scrap.PreloadLibrary,('MercenaryC',          'Chars/MercenaryC.pyc'           )), | ||||
| 	(Scrap.PreloadLibrary,('MercenaryL',          'Chars/MercenaryL.pyc'           )), | ||||
| 	(Scrap.PreloadLibrary,('CrazyGambler',        'Chars/CrazyGambler.pyc'         )), | ||||
| 				), | ||||
| 
 | ||||
| 	"ABINDOOR":( | ||||
| 	(Scrap.PreloadLibrary,('CrazyGamblerSound',   'Sound/CrazyGamblerSound.pyc'    )), | ||||
| 	(Scrap.PreloadLibrary,('CrazyGambler',        'Chars/CrazyGambler.pyc'         )), | ||||
| 				), | ||||
| 
 | ||||
| 	"PRESS":( | ||||
| 	(Scrap.PreloadLibrary,('SebastianSound',      'Sound/SebastianSound.pyc'       )), | ||||
| 	(Scrap.PreloadLibrary,('BossSound',           'Sound/BossSound.pyc'            )), | ||||
| 
 | ||||
| 
 | ||||
| 	(Scrap.PreloadLibrary,('Sebastian',           'Chars/Sebastian.pyc'            )), | ||||
| 	(Scrap.PreloadLibrary,('Boss',                'Chars/Boss.pyc'                 )), | ||||
| 				), | ||||
| } | ||||
| 
 | ||||
| OffLineGame = Scrap.GetNetFlags()==(0,0,0) | ||||
| MultiPlayer = not OffLineGame or Scrap.Get("SplitScreen") != 0 | ||||
| 
 | ||||
| ############################################################################################################ | ||||
| #################################### Preload all the built in libraries #################################### | ||||
| ############################################################################################################ | ||||
| # todos los paths | ||||
| sys.path.append('Scripts/Scorer') | ||||
| sys.path.append('Scripts/ShipEdit') | ||||
| sys.path.append('Scripts/Python') | ||||
| sys.path.append('Scripts/Weapons') | ||||
| sys.path.append('Scripts/Vehicles') | ||||
| sys.path.append('Scripts/Net') | ||||
| sys.path.append('Scripts/FX') | ||||
| sys.path.append('Scripts/Sound') | ||||
| sys.path.append('Scripts/Chars') | ||||
| sys.path.append('Scripts/Missions') | ||||
| sys.path.append('Scripts/SuperDeals') | ||||
| sys.path.append('Scripts/Split') | ||||
| 
 | ||||
| ###### Librerias standard de python  ###### | ||||
| Scrap.PreloadLibrary('string','Python/string.pyc') | ||||
| 
 | ||||
| # determinar el ambito de los mapas... | ||||
| import string | ||||
| UpperMap = string.upper(Scrap.GetLevelPath()[7:]) | ||||
| SuperDealModule = None | ||||
| sDealType       = Scrap.GetSaveVar("SuperDealType") | ||||
| HasSuperDeal    = OffLineGame and sDealType and sDealType != "" and (UpperMap in SUPERDEALSMAPS) | ||||
| OutMapSkip      = OffLineGame and (UpperMap in OUTMAPS) | ||||
| InMapSkip       = OffLineGame and (UpperMap in INMAPS) | ||||
| 
 | ||||
| 
 | ||||
| #Scrap.PreloadLibrary('QuickConsole','QuickConsole.pyc') # QuickConsole no es una libreria para el sistema | ||||
| 
 | ||||
| ###### Librerias basicas del sistema raiz ###### | ||||
| Scrap.PreloadLibrary('Items','Items.pyc') | ||||
| Scrap.PreloadLibrary('SaveGame','SaveGame.pyc') | ||||
| 
 | ||||
| ###### Sistema de menues y scorer ###### | ||||
| log('Preloading ModsMenu') | ||||
| Scrap.PreloadLibrary('MyMenu','Scorer/MyMenu.pyc') | ||||
| log('ModsMenu preload injected') | ||||
| 
 | ||||
| if (Scrap.Get("IsXbox") == 1): | ||||
| 	Scrap.PreloadLibrary('XBMenu','Scorer/XBMenu.pyc') | ||||
| else: | ||||
| 	Scrap.PreloadLibrary('PCMenu','Scorer/PCMenu.pyc') | ||||
| 
 | ||||
| Scrap.PreloadLibrary('Menu','Scorer/Menu.pyc') | ||||
| Scrap.PreloadLibrary('Scorer','Scorer/Scorer.pyc') | ||||
| Scrap.PreloadLibrary('CharScorer','Scorer/CharScorer.pyc') | ||||
| 
 | ||||
| ###### Librerias de red ###### | ||||
| Scrap.PreloadLibrary('Net', 'Net/Net.pyc') | ||||
| 
 | ||||
| ###### Efectos especiales ###### | ||||
| Scrap.PreloadLibrary('Fx', 'FX/Fx.pyc' ) | ||||
| 
 | ||||
| ###### Sistema de sonidos ###### | ||||
| Scrap.PreloadLibrary('Sound',         'Sound/Sound.pyc'        ) | ||||
| Scrap.PreloadLibrary('DoorSound',     'Sound/DoorSound.pyc'    ) | ||||
| 
 | ||||
| ###### Sistema de personajes ###### | ||||
| Scrap.PreloadLibrary('Chars',     'Chars/Chars.pyc'   ) | ||||
| Scrap.PreloadLibrary('MakeChar',  'Chars/MakeChar.pyc') | ||||
| Scrap.PreloadLibrary('Speech',    'Chars/Speech.pyc'  ) | ||||
| Scrap.PreloadLibrary('CharAct',   'Chars/CharAct.pyc' ) | ||||
| 
 | ||||
| ###### Librerias ###### | ||||
| Scrap.PreloadLibrary('Teleport',      'Missions/Teleport.pyc'      ) | ||||
| Scrap.PreloadLibrary('Elevator',      'Missions/Elevator.pyc'      ) | ||||
| Scrap.PreloadLibrary('RaceMaker',     'Missions/RaceMaker.pyc'     ) | ||||
| Scrap.PreloadLibrary('Doors',         'Missions/Doors.pyc'         ) | ||||
| Scrap.PreloadLibrary('Alarm',         'Missions/Alarm.pyc'         ) | ||||
| Scrap.PreloadLibrary('MisItems',      'Missions/MisItems.pyc'      ) | ||||
| Scrap.PreloadLibrary('Traffic',       'Missions/Traffic.pyc'       ) | ||||
| Scrap.PreloadLibrary('Scene',         'Missions/Scene.pyc'         ) | ||||
| Scrap.PreloadLibrary('Challenge',     'Missions/Challenge.pyc'     ) | ||||
| Scrap.PreloadLibrary('MissionsFuncs', 'Missions/MissionsFuncs.pyc' ) | ||||
| Scrap.PreloadLibrary('Metro',         'Missions/Metro.pyc'         ) | ||||
| 
 | ||||
| 
 | ||||
| def LoadCharLib(filename): | ||||
| 	Scrap.PreloadLibrary(filename,        'Chars/'+filename+'.pyc' ) | ||||
| 	filename = filename+"Sound" | ||||
| 	Scrap.PreloadLibrary(filename,        'Sound/'+filename+'.pyc') | ||||
| 
 | ||||
| if not InMapSkip:  # no es interiores | ||||
| 	###### Armas de naves preparadas para red ###### | ||||
| 	Scrap.PreloadLibrary('Weapons',   'Weapons/Weapons.pyc'   ) | ||||
| 	Scrap.PreloadLibrary('Vulcan',    'Weapons/Vulcan.pyc'    ) | ||||
| 	Scrap.PreloadLibrary('Swarm',     'Weapons/Swarm.pyc'     ) | ||||
| 	Scrap.PreloadLibrary('Tesla',     'Weapons/Tesla.pyc'     ) | ||||
| 	Scrap.PreloadLibrary('Cloud',     'Weapons/Cloud.pyc'     ) | ||||
| 	Scrap.PreloadLibrary('Sonic',     'Weapons/Sonic.pyc'     ) | ||||
| 	Scrap.PreloadLibrary('EMI',       'Weapons/EMI.pyc'       ) | ||||
| 	Scrap.PreloadLibrary('Devastator','Weapons/Devastator.pyc') | ||||
| 	Scrap.PreloadLibrary('ATPC',      'Weapons/ATPC.pyc'      ) | ||||
| 	Scrap.PreloadLibrary('Inferno',   'Weapons/Inferno.pyc'   ) | ||||
| 	Scrap.PreloadLibrary('Laser',     'Weapons/Laser.pyc'     ) | ||||
| 	###### Naves y afines ###### | ||||
| 	Scrap.PreloadLibrary('Vehicles',     'Vehicles/Vehicles.pyc'     ) | ||||
| 	Scrap.PreloadLibrary('ShipMaker',    'Vehicles/ShipMaker.pyc'    ) | ||||
| 	Scrap.PreloadLibrary('OutMap',       'Vehicles/OutMap.pyc'       ) | ||||
| 	Scrap.PreloadLibrary('VehiclesNPC',  'Vehicles/VehiclesNPC.pyc'  ) | ||||
| 	Scrap.PreloadLibrary('Parking',      'Vehicles/Parking.pyc'      ) | ||||
| 	Scrap.PreloadLibrary('Accelerator',  'Vehicles/Accelerator.pyc'  ) | ||||
| 
 | ||||
| 	####### scorer solo de exteriores ###### | ||||
| 	Scrap.PreloadLibrary('RacerScorer','Scorer/RacerScorer.pyc') | ||||
| 
 | ||||
| 	#######  Sputnick y sus naves  ####### | ||||
| 	LoadCharLib('Sputnik') | ||||
| 	Scrap.PreloadLibrary('SputnikInterface', 'ShipEdit/SputnikInterface.pyc'  ) | ||||
| 
 | ||||
| 	#######  sonidos de exteriores  ####### | ||||
| 	Scrap.PreloadLibrary('OutSound',      'Sound/OutSound.pyc'     ) | ||||
| 
 | ||||
| 	###### mas misiones de exteriores ###### | ||||
| 	Scrap.PreloadLibrary('OutPolice',     'Missions/OutPolice.pyc' ) | ||||
| 	Scrap.PreloadLibrary('PhoneCab',      'Missions/PhoneCab.pyc'  ) | ||||
| 
 | ||||
| 	###### Sistema de edicion de naves ###### | ||||
| 	Scrap.PreloadLibrary('ShipEdit',  'ShipEdit/ShipEdit.pyc'   ) | ||||
| 	Scrap.PreloadLibrary('HangarTab', 'ShipEdit/HangarTab.pyc'  ) | ||||
| 
 | ||||
| 	if not OutMapSkip: # tampoco interiores (mapas de edicion de naves) | ||||
| 		Scrap.PreloadLibrary('EnginesTab','ShipEdit/EnginesTab.pyc') | ||||
| 		Scrap.PreloadLibrary('WeaponsTab','ShipEdit/WeaponsTab.pyc') | ||||
| 		Scrap.PreloadLibrary('HullTab',   'ShipEdit/HullTab.pyc'   ) | ||||
| 
 | ||||
| if not OutMapSkip: | ||||
| 
 | ||||
| 
 | ||||
| 	for fn in ('Nurse','Police','Desktop','Gear','Sentinel','Berto', | ||||
| 		'BankDirector','Mayor','GateKeeper','Betty','Dtritus', | ||||
| 		'Bishop','Functionary','Humphrey','PoliceBoss', | ||||
| 		'Messenger','Human','BankMaster'): | ||||
| 		LoadCharLib(fn) | ||||
| 
 | ||||
| 	# logica varias de interiores | ||||
| 	Scrap.PreloadLibrary('CrazyWing',     'Missions/CrazyWing.pyc'     ) | ||||
| 	Scrap.PreloadLibrary('Bureaucracy',   'Chars/Bureaucracy.pyc'      ) | ||||
| 	Scrap.PreloadLibrary('CharsNPC',      'Chars/CharsNPC.pyc'         ) | ||||
| 	Scrap.PreloadLibrary('InMap',         'Chars/InMap.pyc'            ) | ||||
| 	Scrap.PreloadLibrary('InTraffic',     'Vehicles/InTraffic.pyc'     ) | ||||
| 	Scrap.PreloadLibrary('DTritusDesktop','Missions/DTritusDesktop.pyc') | ||||
| 
 | ||||
| 	# Sistema de misiones para single player | ||||
| 	Scrap.PreloadLibrary('InPolice',      'Missions/InPolice.pyc'      ) | ||||
| 	Scrap.PreloadLibrary('CharConversor', 'Missions/CharConversor.pyc' ) | ||||
| 
 | ||||
| 	Scrap.PreloadLibrary('NewsPanel', 'Missions/NewsPanel.pyc' ) | ||||
| 
 | ||||
| else: # debo cargar si es un mapa exterior solo mi personaje... | ||||
| 	LoadCharLib(Scrap.GetSaveVar("Char")) | ||||
| 
 | ||||
| if Scrap.Get("SplitScreen") != 0 or (Scrap.Get("isXbox") and UpperMap in ("MENU","SHIPEDIT")): | ||||
| 	Scrap.PreloadLibrary('Split','Split/Split.pyc') | ||||
| 	SplitModeGameMod = Scrap.Get("ServerType") | ||||
| 	Scrap.PreloadLibrary('S'+SplitModeGameMod,'Split/S'+SplitModeGameMod+'.pyc') | ||||
| 	import Split | ||||
| 	Split.ModLib = __import__('S'+SplitModeGameMod) | ||||
| 
 | ||||
| 
 | ||||
| if not OffLineGame: | ||||
| 	Scrap.PreloadLibrary('Chat','Scorer/Chat.pyc') | ||||
| 	Scrap.PreloadLibrary('Ffa', 'Net/Ffa.pyc') | ||||
| 
 | ||||
| 	# cargar la libreria del tipo de juego... | ||||
| 	import Ffa | ||||
| 	GameLibName = "N"+Scrap.Get("ServerType") | ||||
| 	if not Scrap.FileExist('Scripts/Net/'+GameLibName+'.pyc') and not Scrap.FileExist('Scripts/Net/'+GameLibName+'.py'): | ||||
| 		GameLibName = "NDeathMatch" | ||||
| 
 | ||||
| 	Scrap.PreloadLibrary(GameLibName, 'Net/'+GameLibName+'.pyc') | ||||
| 	Ffa.ModLib = __import__(GameLibName) | ||||
| 
 | ||||
| 
 | ||||
| if ExtraExecs.has_key(UpperMap): | ||||
| 	for func in ExtraExecs[UpperMap]: | ||||
| 		apply(apply,func) | ||||
| 
 | ||||
| 
 | ||||
| isDemo     = Scrap.Get("isDemo") | ||||
| 
 | ||||
| Path       = "" # el path del mapa actual | ||||
| Outdoor    = 1  # 1 si el mapa es exterior 0 si es interior. En red debe ser 1 | ||||
| inMainMenu = 0  # 1 si el mapa no es mas que una miserable demo si graficos ni nada | ||||
| isShipEdit = 0  # 1 si el mapa es el edicion de naves. inMainMenu = 0 Outdoor = 1 para que sea valido | ||||
| isJunkYard = 0  # 1 en el caso particular del mapa junkyard | ||||
| OutArea    = "DownTown" # este es el mapa exterior en el que se encuentra (si esta en un interior) no vale para exteriores ni mapa del chatarrero. | ||||
| isScrapYard = 0 | ||||
| 
 | ||||
| XboxSavingMsgTime = 3.5 | ||||
| 
 | ||||
| if (HasSuperDeal): | ||||
| 	Scrap.PreloadLibrary(sDealType, 'SuperDeals/' + sDealType + '.pyc' ) | ||||
| 	SuperDealModule = __import__(sDealType) | ||||
| 
 | ||||
| ######## Maplibs functions ######## | ||||
| MapLibs = [] # esta es la lista de las librerias propias del mapa. Se especifican para su inicializacion | ||||
| 
 | ||||
| # agrega una libreria a la lista de librerias del mapa | ||||
| def AddMLib(library): | ||||
| 	global MapLibs | ||||
| 	MapLibs.append(library) | ||||
| 
 | ||||
| def MLibInitStatus(LevelPath): | ||||
| 	global MapLibs | ||||
| 
 | ||||
| 	for lib in MapLibs: | ||||
| 		lib.InitStatus(LevelPath) | ||||
| 
 | ||||
| def MLibInit(LevelPath): | ||||
| 	global MapLibs | ||||
| 
 | ||||
| 	for lib in MapLibs: | ||||
| 		lib.Init(LevelPath) | ||||
| 
 | ||||
| def isMission(): | ||||
| 	import string | ||||
| 	return string.upper(Scrap.GetSaveVar("Mission.Map")) ==  string.upper(Scrap.GetLevelPath()[7:]) | ||||
| 
 | ||||
| def PreloadMlibs(LevelPath): | ||||
| 	import Map | ||||
| 
 | ||||
| 	if isMission(): | ||||
| 		Map.Libraries.append(Scrap.GetSaveVar("Mission.Library")) | ||||
| 
 | ||||
| 	if "Libraries" in dir(Map): | ||||
| 		for LibName in Map.Libraries: | ||||
| 			Scrap.PreloadLibrary(LibName,LibName+'.pyc') | ||||
| 			AddMLib(__import__(LibName)) | ||||
| 
 | ||||
| 
 | ||||
| Arrows = "Models/Misc/Action/Action","Models/Misc/MMission/MMission","Models/Misc/SMission/SMission","Models/Misc/MMission/BMMission","Models/Misc/SMission/BSMission" | ||||
| 
 | ||||
| Scrap.Set("ArrowUseFile",        Arrows[0]) | ||||
| Scrap.Set("ArrowMissionFile",    Arrows[1]) | ||||
| Scrap.Set("ArrowTargetFile",     Arrows[2]) | ||||
| 
 | ||||
| def SetArrowSize(): | ||||
| 	global Arrows | ||||
| 	for varnam in Arrows: | ||||
| 		Nam = varnam | ||||
| 		Scrap.Preload3DObject(Nam+".M3D",1,1,1) | ||||
| 		Scrap.PreloadAnm(Nam+".M3D",Nam+".anim.M3D") | ||||
| 
 | ||||
| #################################### | ||||
| ##  Initialization routines | ||||
| #################################### | ||||
| def Init(LevelPath): | ||||
| 	global Path | ||||
| 	global Outdoor | ||||
| 	global inMainMenu | ||||
| 	global isShipEdit | ||||
| 
 | ||||
| 	# graba el path | ||||
| 	Path = LevelPath | ||||
| 
 | ||||
| 	# load default libraries | ||||
| 	import sys | ||||
| 	sys.path.append(LevelPath+"/Scripts") | ||||
| 	Scrap.OpenPack(LevelPath+"/Scripts") | ||||
| 	Scrap.PreloadLibrary('Map','Map.pyc') | ||||
| 	Scrap.PreloadLibrary('MapSnd','MapSnd.pyc') | ||||
| 	PreloadMlibs(LevelPath) | ||||
| 	Scrap.ClosePack() | ||||
| 
 | ||||
| 	if Scrap.Get("IsXbox") and not Scrap.Get("ShowCredits") and UpperMap in ("SHIPEDIT","MENU"): | ||||
| 		Scrap.PreloadLibrary('XboxMenu',       'Scripts/Scorer/XboxMenu.pyc') | ||||
| 		AddMLib(__import__('XboxMenu')) | ||||
| 
 | ||||
| 	import Map | ||||
| 	import MapSnd | ||||
| 
 | ||||
| 	# Load map Status | ||||
| 	Map.InitStatus(LevelPath) | ||||
| 	MLibInitStatus(LevelPath) | ||||
| 
 | ||||
| 	################################################################### | ||||
| 	# Para arreglar el que se vea a la nave del jefe de policia dando # | ||||
| 	# rulos por ahн despuйs de muerto y no tener que hacer cambios en # | ||||
| 	# todos los scripts de exteriores.                                # | ||||
| 	################################################################### | ||||
| 	ga = Scrap.GetSaveVar("GameAct") | ||||
| 	if (ga != "Prologue" and ga != "1stMurder"): | ||||
| 		import string | ||||
| 		cad = Scrap.GetSaveVar("Traffic.AcShips") | ||||
| 		if (cad and string.find(cad, "SPoliBoss1") != -1): | ||||
| 			import Traffic | ||||
| 			cad = string.replace(cad, "SPoliBoss1", "SPoli6", 1) | ||||
| 			Scrap.SetSaveVar("Traffic.AcShips", cad) | ||||
| 			Traffic.AcShips = eval(cad) | ||||
| 	####################################################### | ||||
| 
 | ||||
| 
 | ||||
| 	if (SuperDealModule): | ||||
| 		SuperDealModule.InitStatus(LevelPath) | ||||
| 
 | ||||
| 	# modifica el tamaсo de las flechas de mision | ||||
| 	if not inMainMenu and not isShipEdit: | ||||
| 		SetArrowSize() | ||||
| 
 | ||||
| 	#inicializaciуn AI | ||||
| 	SAI.IniAI(LevelPath, Outdoor) | ||||
| 
 | ||||
| 	# initialize the language | ||||
| 	#Scrap.SetLanguage("English") | ||||
| 
 | ||||
| 	# Initialize menu | ||||
| 	Scrap.Set("EscapeEvent","Menu.Init") | ||||
| 	import Menu; Menu.Initialize() | ||||
| 
 | ||||
| 	# Assign Mission Info callback func | ||||
| 	if Scrap.GetNetFlags()==(0,0,0): | ||||
| 		Scrap.Set("MainMissionEvent", "MissionsFuncs.ShowMissionInfo") | ||||
| 	else: | ||||
| 		Scrap.Set("MainMissionEvent", "Ffa.ShowHelp") | ||||
| 
 | ||||
| 	if not OffLineGame: | ||||
| 		# Initialize chat system | ||||
| 		import Chat;Chat.SetChatProc(); | ||||
| 
 | ||||
| 	# Initialize the sound system | ||||
| 	import Sound;Sound.Init() | ||||
| 
 | ||||
| 	# elementos decorativos | ||||
| 	Scrap.CreateElements() | ||||
| 
 | ||||
| 	if not inMainMenu: | ||||
| 		if not Outdoor: | ||||
| 			import Bureaucracy; Bureaucracy.Init() | ||||
| 
 | ||||
| 		if UpperMap in SUPERDEALSMAPS or MultiPlayer: | ||||
| 			Scrap.Set("isActionMusic",1) | ||||
| 
 | ||||
| 		# Initialize Character Controller (en exteriores al menos se carga un set para el single player, nada para el multi) | ||||
| 		if not isShipEdit and not MultiPlayer: | ||||
| 			import Chars; Chars.Init() | ||||
| 			if (not isJunkYard): | ||||
| 				if (Outdoor): | ||||
| 					import PhoneCab | ||||
| 					PhoneCab.CreatePhoneCabClass() | ||||
| 					PhoneCab.CreateAudioComClass() | ||||
| 
 | ||||
| 		#else: | ||||
| 		#	Scrap.SetMoney(1000000) | ||||
| 
 | ||||
| 		if Outdoor or isJunkYard: # lo que son interiores no cargan nada de esto (exepto Junkyard) | ||||
| 			# Initialize Vehicle Controller | ||||
| 			import Vehicles;Vehicles.Init() | ||||
| 
 | ||||
| 			# Initialize Weapons Controller | ||||
| 			import Weapons;Weapons.Init() | ||||
| 
 | ||||
| 		# Initialize Special FX Controller (generico para exteriores e interiores) | ||||
| 		import Fx;Fx.Init() | ||||
| 
 | ||||
| 		if not isShipEdit: | ||||
| 
 | ||||
| 			# sistema de alarma | ||||
| 			import Alarm;Alarm.Init() | ||||
| 
 | ||||
| 			# Items propios de las misiones | ||||
| 			import MisItems;MisItems.Init() | ||||
| 
 | ||||
| 		# puertas y ventanas | ||||
| 		import Doors;Doors.Init() | ||||
| 
 | ||||
| 		if not isShipEdit: | ||||
| 			# Set de los mapas ya sean exteriores o interiores. | ||||
| 			if Outdoor: | ||||
| 				import OutMap;OutMap.Init(LevelPath) | ||||
| 			else: | ||||
| 				import InMap;InMap.Init(LevelPath) | ||||
| 
 | ||||
| 			if not MultiPlayer: | ||||
| 				import SaveGame | ||||
| 				SaveGame.InitVars() | ||||
| 
 | ||||
| 				import MissionsFuncs;MissionsFuncs.Init() | ||||
| 
 | ||||
| 
 | ||||
| 	###Scrap.Set( "VideoGammaRGB", 1.0 ) | ||||
| 
 | ||||
| 	if (Outdoor and Scrap.GetSaveVar("CreateBertos") == "1" and UpperMap != "GDB" and not HasSuperDeal): | ||||
| 		import MissionsFuncs, Parking | ||||
| 		MissionsFuncs.CreateBertos() | ||||
| 		Parking.SwitchVehicleMissionCallbackAux = MissionsFuncs.ReassignBertosPlayerTarget | ||||
| 		Parking.SwitchCharMissionCallbackAux = MissionsFuncs.ReassignBertosPlayerTarget | ||||
| 
 | ||||
| 	if (Scrap.GetSaveVar("RobotsControlledByBoss") == "1"): | ||||
| 
 | ||||
| 		if (Scrap.GetSaveVar("MercsHelpDtritus") == "1"): | ||||
| 			Scrap.SetSaveVar("MercFriends.MercenaryA_Smartie", "1") | ||||
| 			Scrap.SetSaveVar("MercFriends.MercenaryC_Brutus",  "1") | ||||
| 			Scrap.SetSaveVar("MercFriends.MercenaryB_Dumber",  "1") | ||||
| 
 | ||||
| 		if UpperMap in eval(Scrap.GetSaveVar("ComSatsMissionsMapsFinished")): | ||||
| 			Scrap.Set("AlarmFallDelta", -0.05) | ||||
| 			Scrap.SetAlarm(0) | ||||
| 		else: | ||||
| 			Scrap.SetAlarm(1) | ||||
| 			Scrap.Set("AlarmFallDelta",0) | ||||
| 
 | ||||
| 	Scrap.Set("OnCrazyDealFinished", "MissionsFuncs.OnCrazyDealFinishedMessage") | ||||
| 	Scrap.Set("OnCrazyDealTarget", "MissionsFuncs.OnCrazyDealTarget") | ||||
| 
 | ||||
| 	# initialize the map | ||||
| 	Map.Init(LevelPath) | ||||
| 	MapSnd.Init(LevelPath) | ||||
| 	MLibInit(LevelPath) | ||||
| 	if (SuperDealModule): | ||||
| 		SuperDealModule.Init(LevelPath) | ||||
| 
 | ||||
| 	Scrap.AddScheduledFunc(Scrap.GetTime() + 0.5, SetMapLabelText, ()) | ||||
| 
 | ||||
| 	if (isDemo and Scrap.GetSaveVar("Player.NumLives") == "-1"): | ||||
| 		Scrap.SetSaveVar("Player.NumLives", "0") | ||||
| 
 | ||||
| 	Scrap.Set("R_SceneBlurValue",0) | ||||
| 
 | ||||
| 	if OffLineGame and not inMainMenu and not isShipEdit: | ||||
| 		Scrap.CreateSaveVar("GameSkill",  "1") | ||||
| 		Scrap.Set("GameSkill",int(Scrap.GetSaveVar("GameSkill"))) | ||||
| 	print "Actual Level at : ",LevelPath | ||||
| 
 | ||||
| 
 | ||||
| def SetMapLabelText(): | ||||
| 
 | ||||
| 	import Scorer | ||||
| 
 | ||||
| 	vis = SScorer.Get(0, Scorer.MissionScorerName, "Visible") | ||||
| 	if (vis and vis == 1): | ||||
| 		status = SScorer.Get(0, Scorer.MissionScorerName, "Status0") | ||||
| 		if (status != 1 or (status == 1 and Scrap.GetSaveVar("Mission.Map") == Scrap.GetLevelPath()[7:])): | ||||
| 			SScorer.SetLabelText(Scrap.GetLangStr("Station_" + Scrap.GetLevelPath()[7:]), Scrap.GetTime() + 10) | ||||
| 
 | ||||
| 
 | ||||
| # Scrap.CreateSaveVar("Mission01","Searching") | ||||
| # Scrap.CreateSaveVar("Mission01.Objetive","BadGuy") | ||||
| # Scrap.GetSaveVar("Mission01") | ||||
| # Scrap.DelSaveVars("Mission01.") | ||||
| # Scrap.SetSaveVar("Mission01","Eliminate") | ||||
| # Scrap.SaveGameVars("Save/Save01.sav") | ||||
| # Scrap.LoadGameVars("Save/Save01.sav") | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #################################### | ||||
| ##  Closing routines | ||||
| #################################### | ||||
| 
 | ||||
| PROGRESSBAR_PC = { | ||||
| 	"MENU":200, | ||||
| 	"ORBIT":1070, | ||||
| 	"SCRAPYARD":1693, | ||||
| 	"BANK":1641, | ||||
| 	"JUNKYARD":1434, | ||||
| 	"SHIPEDIT":1265, | ||||
| 	"DOWNTOWN":1745, | ||||
| 	"OUTSKIRTS":1775, | ||||
| 	"GAMBLINDEN":1252, | ||||
| 	"COMMERCIAL":1790, | ||||
| 	"FAKE":1462, | ||||
| 	"PRESS":1691, | ||||
| 	"POLICE":1764, | ||||
| 	"TEMPLE":1382, | ||||
| 	"TOWNHALL":1742, | ||||
| 	"AB":1366, | ||||
| 	"ABINDOOR":868, | ||||
| 	"QF":1474, | ||||
| 	"GDB":1517, | ||||
| 	"FZ":1488, | ||||
| 	"OM":1537, | ||||
| 	"CA":1487, | ||||
| 	"MCA":1553, | ||||
| 	"MCB":1553, | ||||
| 	"MDA":1553, | ||||
| 	"MDB":1553, | ||||
| 	"MOA":1553, | ||||
| 	"MOB":1553, | ||||
| 	"MSA":1553, | ||||
| 	"MSB":1553, | ||||
| } | ||||
| 
 | ||||
| PROGRESSBAR_XBOX = { | ||||
| 	"MENU":200, | ||||
| 	"ORBIT":845, | ||||
| 	"SCRAPYARD":1189, | ||||
| 	"BANK":1327, | ||||
| 	"JUNKYARD":990, | ||||
| 	"SHIPEDIT":589, | ||||
| 	"DOWNTOWN":1208, | ||||
| 	"OUTSKIRTS":1182, | ||||
| 	"GAMBLINDEN":995, | ||||
| 	"COMMERCIAL":1214, | ||||
| 	"FAKE":1208, | ||||
| 	"PRESS":1448, | ||||
| 	"POLICE":1533, | ||||
| 	"TEMPLE":1162, | ||||
| 	"TOWNHALL":1539, | ||||
| 	"AB":844, | ||||
| 	"ABINDOOR":690, | ||||
| 	"QF":968, | ||||
| 	"GDB":964, | ||||
| 	"FZ":975, | ||||
| 	"OM":1014, | ||||
| 	"CA":953, | ||||
| 	"MCA":1042, | ||||
| 	"MCB":1016, | ||||
| 	"MDA":1046, | ||||
| 	"MDB":1048, | ||||
| 	"MOA":945, | ||||
| 	"MOB":985, | ||||
| 	"MSA":987, | ||||
| 	"MSB":857, | ||||
| } | ||||
| 
 | ||||
| def Close(): | ||||
| 	# Guarda el nъmero de ficheros a leer en el siguiente nivel | ||||
| 	UpperMap = string.upper(Scrap.GetNewLevelPath()[7:]) | ||||
| 	print "Next level: %s" % UpperMap | ||||
| 
 | ||||
| 	PROGRESSBAR = "" | ||||
| 	if Scrap.Get("IsXbox") == 1 : | ||||
| 		PROGRESSBAR = PROGRESSBAR_XBOX | ||||
| 	else : | ||||
| 		PROGRESSBAR = PROGRESSBAR_PC | ||||
| 
 | ||||
| 	if PROGRESSBAR.has_key(UpperMap): | ||||
| 		Scrap.Set("ProgressBar", PROGRESSBAR[UpperMap]) | ||||
| 	else: | ||||
| 		Scrap.ConsoleError("ERROR: '%s' progress bar info not found \n" % UpperMap) | ||||
| 		Scrap.Set("ProgressBar", Scrap.Def("ProgressBar")) | ||||
							
								
								
									
										10
									
								
								Logger/README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Logger/README.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| # Logger | ||||
| 
 | ||||
| Logger for logging stuff. | ||||
| 
 | ||||
| ```pyhton | ||||
| import Logger | ||||
| 
 | ||||
| Logger.info("A") | ||||
| Logger.error("OH NO!") | ||||
| ``` | ||||
							
								
								
									
										29
									
								
								Logger/scripts/custom/logger.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								Logger/scripts/custom/logger.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| import Scrap | ||||
| 
 | ||||
| class Logger: | ||||
| 
 | ||||
|     def __init__(self, name): | ||||
|         self.level="" | ||||
|         self.name=name | ||||
| 
 | ||||
|     def __repr__(self): | ||||
|         return "<Logger>" | ||||
| 
 | ||||
|     def __call__(self, *args): | ||||
|         # frame = sys.modules[__name__].last_frame | ||||
|         # frame_info = (frame.f_code.co_name,frame.f_code.co_name) | ||||
|         # Scrap.Print(repr(frame_info)+"\n") | ||||
|         args=list(args) | ||||
| 
 | ||||
|         for i in range(len(args)): | ||||
|             args[i]=str(args[i]) | ||||
| 
 | ||||
|         args = ["["+str(self.name)+"|"+string.upper(self.level)+"]"]+args | ||||
| 
 | ||||
|         msg = string.join(args," ") | ||||
| 
 | ||||
|         Scrap.Print(msg+"\n") | ||||
| 
 | ||||
|     def __getattr__(self, level): | ||||
|         self.level=level | ||||
|         return self | ||||
							
								
								
									
										4
									
								
								Police2Gear/README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Police2Gear/README.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| # Police2Gear | ||||
| 
 | ||||
| Mod that replaces police default money-bagging action with transforming to | ||||
| geared police | ||||
							
								
								
									
										517
									
								
								Police2Gear/scripts/chars/police.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										517
									
								
								Police2Gear/scripts/chars/police.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,517 @@ | |||
| import Scrap | ||||
| import SInput | ||||
| import SNet | ||||
| import SWeap | ||||
| import SScorer | ||||
| import SSound | ||||
| import SVec | ||||
| import SAct | ||||
| import sys | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| def log(msg): | ||||
| 	Scrap.Print("[STRNG][Police] " + str(msg) + "\n") | ||||
| 
 | ||||
| 
 | ||||
| # WARNING : Never import any pyhton source library at the start up! | ||||
| 
 | ||||
| FXPoliceStealFile		= "Models/GFX/Police/PoliceSteal.M3D" | ||||
| FXPoliceGearConversionFile 	= "Models/GFX/Police/Conversion.M3D" | ||||
| 
 | ||||
| def LoadSirenActs(): | ||||
| 
 | ||||
| 	# inicio de la sirena | ||||
| 	SAct.CreateAction("SirenInit") | ||||
| 	SAct.SetAct("isLoop",0) | ||||
| 	SAct.SetAct("Chanel",1) | ||||
| 	SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_SirenInit.M3D") | ||||
| 
 | ||||
| 	SAct.SetAct("AddEventAtTime",SAct.GetAct("AnmTotalTime")) | ||||
| 	SAct.SetAct("EventName","Siren") | ||||
| 	SAct.SetAct("EventFunc","!AnmSetAction") | ||||
| 
 | ||||
| 	SAct.SetAct("AddEventAtTime",SAct.GetAct("TimeOfFrame"+"6")) | ||||
| 	SAct.SetAct("EventName","FXPoliceAlarmInit") | ||||
| 	SAct.SetAct("EventFunc","!FXPoliceAlarmInit") | ||||
| 
 | ||||
| 
 | ||||
| 	# loop de la sirena | ||||
| 	SAct.CreateAction("Siren") | ||||
| 	SAct.SetAct("isLoop",1) | ||||
| 	SAct.SetAct("Chanel",1) | ||||
| 	SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_Siren.M3D") | ||||
| 	SAct.SetAct("MaxSpeed",1.3) | ||||
| 	SAct.SetAct("MinSpeed",1.4) | ||||
| 
 | ||||
| 
 | ||||
| 	# final de la sirena | ||||
| 	SAct.CreateAction("SirenEnd") | ||||
| 	SAct.SetAct("isLoop",0) | ||||
| 	SAct.SetAct("Chanel",1) | ||||
| 	SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_SirenEnd.M3D") | ||||
| 
 | ||||
| 	SAct.SetAct("AddEventAtTime",SAct.GetAct("TimeOfFrame"+"65")) | ||||
| 	SAct.SetAct("EventName","FXPoliceAlarmEnd") | ||||
| 	SAct.SetAct("EventFunc","!FXPoliceAlarmEnd") | ||||
| 
 | ||||
| 
 | ||||
| def Init(): | ||||
| 	import MakeChar, Init, string | ||||
| 
 | ||||
| 	MakeChar.InitChar       ("Police") | ||||
| 
 | ||||
| 	# ajustes varios de velocidad | ||||
| 	MakeChar.MaxSpeed = 1.2 | ||||
| 	MakeChar.MinSpeed = 0.6 | ||||
| 
 | ||||
| 	MakeChar.AddRelaxActions("Police",0) | ||||
| 	SAct.GetAction("Relax0") | ||||
| 	SAct.SetAct("anmConeView",1) | ||||
| 
 | ||||
| 	MakeChar.AddWalkActions ("Police",360,1) | ||||
| 	MakeChar.AddFallAction  ("Police",45,1,0) | ||||
| 	MakeChar.AddDazeAction  ("Police") | ||||
| 	MakeChar.AddTalkAction  ("Police",nExtraActions=3) | ||||
| 	MakeChar.AddDiscover    ("Police") | ||||
| 	MakeChar.AddInitWalkActions("Police",360,0,1,["StrLeftInit","StrRightInit"]) | ||||
| 
 | ||||
| 	MakeChar.AddFlashedAction("Police") | ||||
| 	MakeChar.AddCrazyAction  ("Police") | ||||
| 
 | ||||
| 	SAct.GetCls("Police") | ||||
| 	SAct.SetCls("WRadius",69)         # Radio de colision con el mundo | ||||
| 	SAct.SetCls("VRadius",60)         # Radio de colision con el mundo | ||||
| 	SAct.SetCls("SRadius",20)         # Radio de la capsula de soporte | ||||
| 
 | ||||
| 	SAct.SetCls("MinFallDist",20)     # tamaño maximo que acepta como escalon para las caidas | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	#### Lista de modificadores de nodos del policia #### | ||||
| 	SAct.SetCls("Node0Name","Bip PoliceNoArmor Head")       # Cabeza | ||||
| 	SAct.SetCls("Node1Name","Bip PoliceNoArmor Spine1")     # Tronco | ||||
| 
 | ||||
| 	# Relax | ||||
| 	MakeChar.SetNodeRotation(0,0,   25,   50)  # Cabeza | ||||
| 	MakeChar.SetNodeRotation(0,1,   25,   50)  # Tronco | ||||
| 
 | ||||
| 	#### Cuando le dan en la cabeza, la sirena se hunde | ||||
| 	SAct.GetAction("DazedInit") | ||||
| 	SAct.SetAct("AddEventAtTime",SAct.GetAct("AnmTotalTime")) | ||||
| 	SAct.SetAct("EventName","AbortSiren") | ||||
| 	SAct.SetAct("EventFunc","Police.AbortSiren") | ||||
| 
 | ||||
| 	#### Acciones Extra #### | ||||
| 
 | ||||
| 	# animavion de andandara | ||||
| 	MakeChar.CreateRelaxAction("Police",90,"AlertCheck","Relax0") | ||||
| 	SAct.GetAction("AlertCheck") | ||||
| 	SAct.SetAct("anmConeView",1) | ||||
| 
 | ||||
| 	for ActName in (("",0),("NPC",360)): | ||||
| 		# try get money | ||||
| 		SAct.CreateAction("ActionInit"+ActName[0]) | ||||
| 		SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_ActionInit.M3D") | ||||
| 		SAct.SetAct("isLoop",0) | ||||
| 		SAct.SetAct("RotSpeed",ActName[1]) | ||||
| 		SAct.SetAct("UseDisp",0) | ||||
| 		SAct.SetAct("PriorityLevel",100) | ||||
| 
 | ||||
| 		# evento de "Te succiono el dinero" | ||||
| 		SAct.SetAct("AddEventAtTime",0.3) | ||||
| 		SAct.SetAct("EventName","PoliceRestoreFreeTurn") | ||||
| 		SAct.SetAct("EventFunc","!PoliceRestoreFreeTurn") | ||||
| 		SAct.SetAct("EventDiscardable",0) | ||||
| 
 | ||||
| 		# trying to get money | ||||
| 		SAct.CreateAction("Action"+ActName[0]) | ||||
| 		SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_Action.M3D") | ||||
| 		SAct.SetAct("isLoop",1) | ||||
| 		SAct.SetAct("RotSpeed",ActName[1]) | ||||
| 		SAct.SetAct("UseDisp",0) | ||||
| 		SAct.SetAct("PriorityLevel",101) | ||||
| 
 | ||||
| 		# evento de "Te succiono el dinero" | ||||
| 		SAct.SetAct("AddEventAtTime",SAct.GetAct("AnmTotalTime")*1.5) | ||||
| 		SAct.SetAct("EventName","ShowMeTheMoney") | ||||
| 		SAct.SetAct("EventFunc","!PoliceEndActionMoney") | ||||
| 
 | ||||
| 
 | ||||
| 	# Bad luck getting money | ||||
| 	SAct.CreateAction("ActionBad") | ||||
| 	SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_ActionBad.M3D") | ||||
| 	SAct.SetAct("isLoop",0) | ||||
| 	SAct.SetAct("RotSpeed",0) | ||||
| 	SAct.SetAct("UseDisp",0) | ||||
| 	SAct.SetAct("PriorityLevel",101) | ||||
| 
 | ||||
| 	# Bad luck getting money | ||||
| 	SAct.CreateAction("ActionOK") | ||||
| 	SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_ActionOK.M3D") | ||||
| 	SAct.SetAct("isLoop",0) | ||||
| 	SAct.SetAct("RotSpeed",0) | ||||
| 	SAct.SetAct("UseDisp",0) | ||||
| 	SAct.SetAct("PriorityLevel",101) | ||||
| 
 | ||||
| 	# We laugh, and cry too | ||||
| 	SAct.CreateAction("Laugh") | ||||
| 	SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_Laugh.M3D") | ||||
| 	SAct.SetAct("isLoop",0) | ||||
| 	SAct.SetAct("RotSpeed",360) | ||||
| 	SAct.SetAct("UseDisp",0) | ||||
| 	SAct.SetAct("PriorityLevel",102) | ||||
| 	SAct.SetAct("NodeModifier",-1) | ||||
| 	SAct.SetAct("AngleModifierSpeed",1.0) | ||||
| 	SAct.SetAct("AutoFaceSpeed",  10) | ||||
| 	SAct.SetAct("AutoFaceOffsetH", 0) | ||||
| 	SAct.SetAct("AutoFaceOffsetV", 0) | ||||
| 
 | ||||
| 	import Init | ||||
| 	if not Init.Outdoor: | ||||
| 		# Police Fusion | ||||
| 		SAct.CreateAction("Fusion") | ||||
| 		SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_Fusion.M3D") | ||||
| 		SAct.SetAct("isLoop",0) | ||||
| 		SAct.SetAct("PriorityLevel",200) | ||||
| 
 | ||||
| 		# evento de conversión de Policia en Gear | ||||
| 		SAct.SetAct("AddEventAtTime",0) | ||||
| 		SAct.SetAct("EventName","FusionInit") | ||||
| 		SAct.SetAct("EventFunc","!FXPoliceGearConversion") | ||||
| 		SAct.SetAct("EventDiscardable",0) | ||||
| 
 | ||||
| 		# evento de cambiazo efectivo y brutal! | ||||
| 		SAct.SetAct("AddEventAtTime",SAct.GetAct("AnmTotalTime")) | ||||
| 		SAct.SetAct("EventName","FusionInit") | ||||
| 		# SAct.SetAct("EventFunc","Police.GotGear") | ||||
| 		SAct.SetAct("EventFunc","!Police2GearEnd") | ||||
| 		SAct.SetAct("EventDiscardable",0) | ||||
| 
 | ||||
| 
 | ||||
| 		SAct.CreateAction("ActionFusion") | ||||
| 		SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_Fusion.M3D") | ||||
| 		SAct.SetAct("isLoop",0) | ||||
| 		SAct.SetAct("PriorityLevel",200) | ||||
| 
 | ||||
| 		# evento de conversión de Policia en Gear | ||||
| 		SAct.SetAct("AddEventAtTime",0) | ||||
| 		SAct.SetAct("EventName","ActionFusionInit") | ||||
| 		SAct.SetAct("EventFunc","!FXPoliceGearConversion") | ||||
| 		SAct.SetAct("EventDiscardable",0) | ||||
| 
 | ||||
| 		# evento de cambiazo efectivo y brutal! | ||||
| 		SAct.SetAct("AddEventAtTime",SAct.GetAct("AnmTotalTime")) | ||||
| 		SAct.SetAct("EventName","ActionFusionInit") | ||||
| 		# SAct.SetAct("EventFunc","Police.GotGear") | ||||
| 		# SAct.SetAct("EventFunc","!Police2GearEnd") | ||||
| 		SAct.SetAct("EventDiscardable",0) | ||||
| 
 | ||||
| 	if string.upper(Init.Path) == 'LEVELS/GAMBLINDEN': | ||||
| 		#MakeChar.CreateRelaxAction("Police",180,"Dance0",   "Dance0"   ) | ||||
| 		MakeChar.CreateRelaxAction("Police",180,"Dance",    "Dance"    ) | ||||
| 		SAct.SetAct("isLoop",1) | ||||
| 
 | ||||
| 	LoadSirenActs() | ||||
| 	SAct.SetCls("OnCreate","Police.OnCreate") | ||||
| 
 | ||||
| 	SAct.SetCls("OnFreeResources","Police.OnFreeResources") | ||||
| 
 | ||||
| 	#### Police actions ###### | ||||
| 	SAct.SetCls("ActionPress","Police.GetGear") | ||||
| 
 | ||||
| 
 | ||||
| 	##### Police Sounds ##### | ||||
| 	import PoliceSound;PoliceSound.Init("Police") | ||||
| 
 | ||||
| 	##### Police Effects ##### | ||||
| 	import Fx | ||||
| 
 | ||||
| 	if not Init.OutMapSkip : | ||||
| 		Scrap.Set("FXPoliceStealFile",FXPoliceStealFile) | ||||
| 		Scrap.SetDebrisSys(FXPoliceStealFile,1,0,0,1,0,0,Fx.FXPOLICESTEAL) | ||||
| 
 | ||||
| 		Scrap.Set("FXPoliceGearConversionFile",FXPoliceGearConversionFile) | ||||
| 		Scrap.SetDebrisSys(FXPoliceGearConversionFile,2,0,0,1,0,0,Fx.FXPOLICEGEARCONVERSION) | ||||
| 
 | ||||
| 	##### Police Speech ##### | ||||
| 	import Speech | ||||
| 	Speech.SpeechRoutines["Police"] = PoliceSpeech | ||||
| 
 | ||||
| 
 | ||||
| def OnCreate(EntityName): | ||||
| 	e = Scrap.GetEntity(EntityName) | ||||
| 	e.TgType = "Green" | ||||
| 
 | ||||
| 	import CharAct;CharAct.OnCreate(EntityName) | ||||
| 	import PoliceSound; PoliceSound.InitLoops(EntityName) | ||||
| 
 | ||||
| 
 | ||||
| def OnFreeResources(): | ||||
| 	import Fx | ||||
| 
 | ||||
| 	Scrap.SetDebrisSys(FXPoliceStealFile,0,0,0,1,0,0,Fx.FXPOLICESTEAL) | ||||
| 	Scrap.SetDebrisSys(FXPoliceGearConversionFile,0,0,0,1,0,0,Fx.FXPOLICEGEARCONVERSION) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| def AbortSiren(EntityName,EventName,Time): | ||||
| 	char = Scrap.GetEntity(EntityName) | ||||
| 	if char.ActChan1: | ||||
| 		char.Action = "SirenEnd" #cuchuflon! | ||||
| 
 | ||||
| def GetGear(EntityName): | ||||
| 	me = Scrap.GetEntity(EntityName) | ||||
| 	me.Action = "ActionFusion" | ||||
| 	# changeTime = Scrap.GetTime() + SAct.GetAct("AnmTotalTime") + 0.1 | ||||
| 	# Scrap.AddScheduledFunc(changeTime, ChangeToGear, ()) | ||||
| 
 | ||||
| 
 | ||||
| def ChangeToGear(): | ||||
| 	import Chars | ||||
| 	# Chars.LoadRes("Gear") | ||||
| 	# Scrap.UsrEntity(0).ActCtrl="Gear" | ||||
| 
 | ||||
| 
 | ||||
| # def GetGear(EntityName): | ||||
| # 	import Chars, Menu | ||||
| # 	global Cam, AuxInterp, newme, me | ||||
| # | ||||
| #  	char = Scrap.GetEntity(EntityName) | ||||
| # 	char.Action = "Fusion" | ||||
| # | ||||
| # 	me = Scrap.GetEntity(EntityName) | ||||
| # | ||||
| # 	Cam = Scrap.GetEntity(Scrap.GetCam(0)) | ||||
| # | ||||
| # 	# crea el interpolador intermedio | ||||
| # 	AuxInterp = Scrap.CreateEntity("AuxInterp",me.Pos[0],me.Pos[1],me.Pos[2],"Obj") | ||||
| # 	AuxInterp.Ang    = me.ViewAng | ||||
| # | ||||
| # 	if me.Name == "PlayerZ": | ||||
| # 		PlName = "Player0" | ||||
| # 	else: | ||||
| # 		PlName = "PlayerZ" | ||||
| # | ||||
| # 	newme = Chars.CreateMainChar(PlName,Scrap.GetSaveVar("Char"),me.Pos,me.Ang) | ||||
| # | ||||
| # 	AuxInterp.CamTgt      = newme.CamTgt | ||||
| # 	AuxInterp.MovePos     = newme.Pos | ||||
| # 	AuxInterp.MoveAng     = newme.ViewAng | ||||
| # 	AuxInterp.MoveFade    = 3 | ||||
| # 	AuxInterp.MoveTime    = SAct.GetAct('AnmTotalTime') | ||||
| # 	SAct.GetClass(me.ActCtrl) | ||||
| # 	Cam.Fov     = SAct.GetCls("FOV") | ||||
| # 	Cam.CamDist = SAct.GetCls("CamDist") | ||||
| # 	Cam.CamAng  = SAct.GetCls("CamAng") | ||||
| # 	Cam.CamRot  = SAct.GetCls("CamRot") | ||||
| # 	Menu.MovieScorer(0) | ||||
| # 	SInput.SetActionSet("Inactive") | ||||
| 
 | ||||
| 
 | ||||
| def GotGear(EntityName, b, c): | ||||
| 	import Chars, Menu, CharScorer | ||||
| 	global Cam, AuxInterp, newme, me | ||||
| 
 | ||||
| 	SInput.SetActionSet("Walk") | ||||
| 
 | ||||
| 	Cam.MainTarget   = Cam.Target = newme.Name | ||||
| 	newme.Energy = me.Energy-1.0 | ||||
| 	newme.Life = 100 | ||||
| 	newme.UsrControl  = 0 | ||||
| 
 | ||||
| 	ActCtrl = me.ActCtrl | ||||
| 	me.Active = 0 | ||||
| 	me.ActCtrl = "" | ||||
| 	me.Del() | ||||
| 
 | ||||
| 	Chars.DiscardRes(ActCtrl) | ||||
| 	AuxInterp.Del() | ||||
| 	del Cam | ||||
| 	del AuxInterp | ||||
| 	CharScorer.Create(0) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| # comienza a pedir dinero | ||||
| # def ActionPress(EntityName): | ||||
| # 	char = Scrap.GetEntity(EntityName) | ||||
| # 	if not char.isFalling: | ||||
| # 		char.Action      = "ActionInit" | ||||
| # 		if char.Action == "ActionInit": | ||||
| # 			char.DefLoop     = "Action" | ||||
| 
 | ||||
| # cuando termina el loop de pedir dinero | ||||
| # def EndActionMoney(EntityName,EventName,Time): | ||||
| # 	char = Scrap.GetEntity(EntityName) | ||||
| # 	if not char.ActionPress: | ||||
| # 		char.ForceDefLoop = "Relax" | ||||
| # 		char.ForceAction  = "Relax" | ||||
| 
 | ||||
| 
 | ||||
| # Scrap.GetEntity("DM_Door_Elevator_00").RadarShow = 1 | ||||
| 
 | ||||
| def GoToMission(CharName): | ||||
| 	ch = Scrap.GetEntity(CharName) | ||||
| 	ch.LLogicGotoMainMission = 1 | ||||
| 
 | ||||
| ResState = 0 | ||||
| 
 | ||||
| ## | ||||
| ## Rutina de parloteo del Policia | ||||
| #################################### | ||||
| def PoliceSpeech(UsrName,CharName,optId,FullOption): | ||||
| 	global ResState | ||||
| 	import Speech, Chars, Challenge, Menu, CharsNPC | ||||
| 
 | ||||
| 	ch = Scrap.GetEntity(CharName) | ||||
| 	Speech.PlayerName = UsrName | ||||
| 	Speech.NPCName    = CharName | ||||
| 
 | ||||
| 	charType = "Police" | ||||
| 
 | ||||
| 	if   (optId == "Talk"): | ||||
| 		CharsNPC.CheckActualEntity(CharName) | ||||
| 
 | ||||
| 		if ch.LLogicState==10: | ||||
| 			Speech.OnSpch("Generics_PoliceWereIsGoInitMsg1","Generics_PoliceWereIsGoInitAns1") | ||||
| 		else: | ||||
| 			rndval = apply(Scrap.Rand, (1.0 , 3.9) ) | ||||
| 
 | ||||
| 			if (Speech.OnSpch("Generics_" + charType + "_InitMsg1","Generics_" + charType + "_InitAns"+`int(rndval)`)): | ||||
| 				CharsNPC.optionsList, CharsNPC.subOptionsList = CharsNPC.ClassifyOptions(charType) | ||||
| 				Speech.StdAnsLst(CharsNPC.optionsList+["Generics_PoliceWereIs"]) | ||||
| 				numOpts  = len(CharsNPC.optionsList)+1 | ||||
| 				index = 0 | ||||
| 
 | ||||
| 				if (Scrap.GetSaveVar("Player.InfiniteLives") == "0"): | ||||
| 					Challenge.AddChallenge(ch, UsrName, numOpts) | ||||
| 
 | ||||
| 	elif (optId in CharsNPC.optionsList): | ||||
| 
 | ||||
| 		if Speech.OnSpch(optId + "Msg", optId + "Ans"): | ||||
| 
 | ||||
| 			index = CharsNPC.optionsList.index(optId) | ||||
| 			index = index + 1 | ||||
| 
 | ||||
| 			CharsNPC.IncludeSubOptions(optId) | ||||
| 			Speech.StdAnsLst(CharsNPC.optionsList+["Generics_PoliceWereIs"]) | ||||
| 			numOpts = len(CharsNPC.optionsList)+1 | ||||
| 			ch.ArriOpt = index | ||||
| 			if (Scrap.GetSaveVar("Player.InfiniteLives") == "0"): | ||||
| 				Challenge.AddChallenge(ch, UsrName, numOpts) | ||||
| 
 | ||||
| 	elif optId=="Generics_PoliceWereIs": | ||||
| 		ch.LLogicGotoMainMission = 1 | ||||
| 		ch.LLogicState           = 0 | ||||
| 		ch.LLogicIdle            = 1 | ||||
| 		if ch.LLogicPoliceResult == 0: | ||||
| 			Speech.OnSpch("Generics_PoliceWereIsMsg","Generics_PoliceWereIsNo") | ||||
| 			ch.ArriOpt = 0 | ||||
| 		else: | ||||
| 			Speech.OnEndOfSpeech = GoToMission | ||||
| 			Speech.OnEndOfSpeechParams = (ch.Name,) | ||||
| 			Speech.OnSpch("Generics_PoliceWereIsMsg","Generics_PoliceWereIsYes") | ||||
| 			Speech.RestoreState(CharName) | ||||
| 
 | ||||
| 	elif optId=="ChallengeRaceStdOpt0": | ||||
| 		if Speech.OnSpch("ChallengeRace" + charType + "Opt1","ChallengeRace" + charType + "Msg1"): | ||||
| 			Challenge.challengeType = "Race" | ||||
| 			Challenge.foeType = charType | ||||
| 			Challenge.SetChallengeOptions(ch) | ||||
| 
 | ||||
| 	elif optId=="ChallengeCombatStdOpt0": | ||||
| 		if Speech.OnSpch("ChallengeCombat" + charType + "Opt1","ChallengeCombat" + charType + "Msg1"): | ||||
| 			Challenge.challengeType = "Combat" | ||||
| 			Challenge.foeType = charType | ||||
| 			Challenge.SetChallengeOptions(ch) | ||||
| 
 | ||||
| 	elif optId=="ChallengeRaceStdOpt1": | ||||
| 		Challenge.OnChallengeOpt(1, ch) | ||||
| 
 | ||||
| 	elif optId=="ChallengeRaceStdOpt2": | ||||
| 		Challenge.OnChallengeOpt(2, ch) | ||||
| 
 | ||||
| 	elif optId=="ChallengeRaceStdOpt3": | ||||
| 		Challenge.OnChallengeOpt(3, ch) | ||||
| 
 | ||||
| 	elif optId=="ChallengeRaceStdOpt4": | ||||
| 		if Speech.OnSpch("ChallengeRaceStdOpt2","ChallengeRace" + charType + "Msg3"): | ||||
| 			Speech.StdAnsLst(CharsNPC.optionsList) | ||||
| 			numOpts  = len(CharsNPC.optionsList) | ||||
| 			Challenge.AddChallenge(ch, UsrName, numOpts) | ||||
| 			index = 0 | ||||
| 
 | ||||
| 	elif optId=="GiveWhy": # Preguntarle por que es tan cabron | ||||
| 		if Speech.OnSpch("Generics_PoliceBribeGiveWhyAns","Generics_PoliceBribeGiveWhyMsg"): | ||||
| 			ResState = 0 | ||||
| 			ch.ForceAction         = "FaceToTalk" | ||||
| 			ch.ForceDefLoop        = "TalkListenNPC" | ||||
| 			Speech.OnEndOfSpeech   = OnEndOfSpeech | ||||
| 	elif optId=="GiveYes": # darle soborno al policia | ||||
| 		if Scrap.GetMoney()>=Scrap.Get("PoliceStealQuanto"): | ||||
| 			Scrap.SetMoney(Scrap.GetMoney()-Scrap.Get("PoliceStealQuanto")) | ||||
| 			Scrap.SetAlarm(0) | ||||
| 			# pierdes tu preciado dinero | ||||
| 			ResState               = 1 | ||||
| 			ch.LLogicState         = 0 | ||||
| 			ch.LLogicTarget        = "" | ||||
| 			ch.ForceAction         = "Relax" | ||||
| 			ch.ForceDefLoop        = "Relax" | ||||
| 			if Speech.OnSpch("Generics_PoliceBribeGiveYesAns","Generics_PoliceBribeGiveYesMsg"): | ||||
| 				Speech.OnEndOfSpeech   = OnEndOfSpeech | ||||
| 		else: | ||||
| 			# creo que no puedes pagarle | ||||
| 			if Speech.OnSpch("Generics_PoliceBribeCantDoAns","Generics_PoliceBribeCantDoMsg"): | ||||
| 				ResState               = 0 | ||||
| 				ch.ForceAction         = "FaceToTalk" | ||||
| 				ch.ForceDefLoop        = "TalkListenNPC" | ||||
| 				Speech.OnEndOfSpeech   = OnEndOfSpeech | ||||
| 	elif optId=="GiveNo":  # no darle ni una mierda al policia | ||||
| 
 | ||||
| 		if Scrap.Rand(0,100) < 50: | ||||
| 			# se cabrea | ||||
| 			ch = Scrap.GetEntity(Speech.NPCName) | ||||
| 			me = Scrap.GetEntity(Speech.PlayerName) | ||||
| 			if Speech.PlayerAns(me,ch,"Generics_PoliceBribeGiveNoAns",OnEndOfSpeech): | ||||
| 				ResState = -1 | ||||
| 				Speech.OnEndOfSpeech   = OnEndOfSpeech | ||||
| 		else: | ||||
| 			# no se cabrea pero te advierte! | ||||
| 			ch.LLogicState         = 0 | ||||
| 			ch.LLogicTarget        = "" | ||||
| 			ch.ForceAction         = "Relax" | ||||
| 			ch.ForceDefLoop        = "Relax" | ||||
| 			Speech.OnSpch("Generics_PoliceBribeGiveNoAns","Generics_PoliceBribeGiveNoMsg") | ||||
| 	else: | ||||
| 		print "Error PoliceSpeech(",UsrName,CharName,optId,FullOption,")" | ||||
| 		PoliceSpeech(UsrName,CharName,"Talk",FullOption) | ||||
| 
 | ||||
| 
 | ||||
| def OnEndOfSpeech(): | ||||
| 	import Speech | ||||
| 	ch = Scrap.GetEntity(Speech.NPCName) | ||||
| 	me = Scrap.GetEntity(Speech.PlayerName) | ||||
| 
 | ||||
| 	if ResState==1: | ||||
| 		if (ch): | ||||
| 			ch.ForceAction        = "ActionOK" | ||||
| 		Scrap.SetCallFunc("!FXPoliceSteal") | ||||
| 		Scrap.AddParams(Speech.NPCName) | ||||
| 		Scrap.AddParams(me.Name) | ||||
| 		Scrap.Execute() | ||||
| 	elif ResState==-1: | ||||
| 		if (ch): | ||||
| 			ch.LLogicPoliceResult = -1 | ||||
| 		me.ForceAction        = "Relax" | ||||
| 		me.ForceDefLoop       = "Relax" | ||||
| 		me.AutoSelect         = 1 | ||||
| 	else: | ||||
| 		if (ch): | ||||
| 			if ch.Action[0:5] == "Relax": | ||||
| 				ch.LLogicIdle         = ResState | ||||
| 				ch.LLogicPoliceResult = ResState | ||||
| 				ch.ForceAction        = "ActionNPC" | ||||
| 				ch.ForceDefLoop       = "ActionNPC" | ||||
| 			ch.SelectedEntity  = Scrap.UsrEntity(0).Name | ||||
|  | ||||