Making it Snow in game

From OuroDev

The Setup

There are several files that need to be modified to make this work. First, we need to create a new Temporary Power, and add it to the Temporary Power powerset. Then we need to create a script that will grant this power on map entry, and lastly, we need to apply it to the maps of our choosing. This will also require that you have already setup a server for creating bins, and a set of loose data.

Useful Links for prior to this tutorial

Files to be modified/created

  • \serverdata\defs\powers\Temporary_Powers_Temporary_Powers.powers
-We will modify this file, it is the actual powers located in "Temporary Powers"
  • \serverdata\defs\powers\Temporary_Powers.powersets
-We will modify this file, it is the container for all temporary powers
  • \serverdata\scripts.loc\ScriptDefs\Holiday_Snow.scriptdef
-We will create this file, it will grant the temporary power
  • \serverdata\specs\maps.spec
-We will modify this file, it will attach our script to the specific maps

Powers Files

Temporary_Powers.powersets

We are going to open up Temporary_Powers.powersets to modify it, open it with notepad or notepad++. Around line 6089 should be the end of the Temporary_Powers category before the start of Temporary_Powers.Accolades. Before the ending }, we need to add the following. Please keep in mind that the name following Temporary_Powers.Temporary_Powers.<NAME> is going to be the name of the power, and needed for the next step!

Powers Temporary_Powers.Temporary_Powers.Holiday_Snow
	Available 0
	AIMaxLevel 0
	AIMinRankCon -9999
	AIMaxRankCon 9999
	MinDifficulty 2
	MaxDifficulty 9999

Temporary_Powers_Temporary_Powers.powers

I simply added the new power to the end of the Temporary_Powers_Temporary_Powers.powers file

Power Temporary_Powers.Temporary_Powers.Holiday_Snow
{
	Name                 "Holiday_Snow"
	DisplayName          "Holiday_Snow"
	Type                 kAuto
	Accuracy             1
	EntsAffected         kCaster
	EntsAutoHit          kCaster
	Target               kCaster
	Range                0
	EnduranceCost        0
	IdeaCost             0
	InterruptTime        0
	TimeToActivate       0
	RechargeTime         0
	ActivatePeriod       50000
	EffectArea           kCharacter
	Radius               0
	Arc                  0
	AIReport             kNever
	// Additional Power Factors
	ShootThroughUntouchable kTrue
	DisplayShortHelp     "Holiday_Snow"
	DisplayHelp          "Holiday_Snow"
	TimeToConfirm        0
	CastThroughHold      kTrue
	CastThroughSleep     kTrue
	CastThroughStun      kTrue
	CastThroughTerrorize kTrue
	DoNotSave            kTrue
	ShowInManage         kFalse
	ShowInInventory      kFalse
	ShowInInfo           kFalse
	ShowBuffIcon         kFalse
	IconName             "Temporary_HolidayPBAoE.tga"

	AttribMod
	{
		Name                 "Ones"                        
		Table                "Ranged_Ones"                 
		Aspect               kCur
		Attrib               kNull
		Target               kTarget
		Scale                1
		Type                 kMagnitude
		AllowStrength        kFalse
		AllowResistance      kFalse
		Delay                0
		Duration             9999
		Magnitude            1
		Period               0
		Chance               1
		NearGround           kFalse
		CancelOnMiss         kFalse
		StackType            kReplace
		ContinuingFX         WORLD\WinterEvent\N_SnowFall.fx
	}
}

This is basically the Instant SnowStorm power with a few tweaks. It shouldn't stay across zones (dismisses once you leave the zone) and it does not have the initial cast animations.

The Scripts and Specs

Scripts

Create a new file in \serverdata\scripts.loc\ScriptDefs and name it Holiday_Snow.script.def Put the following contents into the file to tell it to automatically grant the temporary power we created.

ScriptDef
{
	ScriptName OnEnterGrantPowerZone

	// Vars 
	var Power = Temporary_Powers.Temporary_Powers.Holiday_Snow
}

maps.spec

Maps.spec includes alot of information for zones. Specifically we want to add a ZoneScript to each zone that we want snow to appear in. Here is what a zone looks like in maps.spec

// Atlas Park
Map City_01_01.txt
{
	// appropriate level ranges for this zone
	MissionMinLevel 1
	SpawnOverrideMinLevel 1
	SpawnOverrideMaxLevel 10

	ZoneScripts scriptdefs/LevelOne_LevelUpReminder.scriptdef

	MissionsAllowed Hero
	PlayersAllowed Hero
	MissionDoors Office, AbandonedOffice, Warehouse, AbandonedWarehouse, Sewers, Caves, Tech, 911_AP_Family_Jewels, 911_AP_First_National, 911_AP_Exchange, PPD_APdoor1, PoliceBandCaves, PoliceBandSewers, PoliceBandOffice ,PoliceBandAbandonedOffice, PoliceBandWarehouse, PoliceBandAbandonedWarehouse, PoliceBandCircleOfThorns, Safeguard, Architect, AP_PP_Office, AP_PP_AbandonedOffice, AP_PP_Sewers, AP_PP_Caves, AP_PP_Manhole, AP_PP_AbandonedWarehouse, AP_PP_Warehouse, AP_TP_Caves, AP_TP_AbandonedOffice, AP_TP_Office, AP_TP_Sewers, AP_TP_Tech, AP_TP_Manhole, AP_TP_AbandonedWarehouse, AP_TP_Warehouse, AP_HW_Office, AP_HW_AbandonedOffice, AP_HW_Tech, AP_HW_Sewers, AP_HW_Truck, AP_HW_Manhole, AP_HW_AbandonedWarehouse, AP_HW_Warehouse, AP_D_AbandonedOffice, AP_D_Office, AP_D_Sewers, AP_D_Tech, AP_D_Tech, AP_D_Warehouse, AP_D_Manhole, AP_D_Truck, AP_D_AbandonedWarehouse, AP_AI_AbandonedWarehouse, AP_AI_AbandonedOffice, AP_AI_Warehouse, AP_AI_Sewers, AP_AI_Sewers, AP_AI_Tech, AP_AI_Manhole, AP_AI_Truck, AP_MH_Mission4, AP_OF_M3, RS_I_1, AP_AT_M4, AP_SC_M4, OGT_ShiningStarsBaseOne, OmegaTeamMemorial, SigStory2PhalanxHQ
	PersistentNPCs FreedomCorp_City_01_01, Tony_Kord, Laurence_Mansfield, Jose_Brogan, FreedomCorp_City_01_01b, Susan_Davies, Security_Chief_01, MsLiberty, FreedomCorp_City_01_03, Iris_Parker, SuperGroupRegistrar, City_Representative, Sarah_Juarez, Henry_Peter_Wong, Azuria, Rick_Davies, Sarah_Peters, Security_Chief_04, Jonathan_Smythe, FreedomCorp_City_01_01c, Charlie, NotorietyContact6, Architect_Studio_Manager_H_AP, Architect_Greeter_AP, Architect_Instructor_AP, Architect_ComputerTech_AP, Architect_AsstManager_AP, Architect_MedicalTech_AP, Architect_VenderTech_AP,OGTH_Dillo_Act1, OGTH_Flambeaux_Act1, OGTH_Grym_Act1, OGTH_Proton_Act1, OGTH_Twinshot_Act1, Officer_Nelson_HabashyMish2, Wavelength, TUNNEL_Paragon, AntonioNashSSA2_2
	VisitLocations Statue1, Patrol_Hard_5_City_01_01, Patrol_Hard_4_City_01_01, Patrol_Hard_3_City_01_01, Patrol_Hard_2_City_01_01, Patrol_Hard_1_City_01_01, Patrol_Easy_5_City_01_01, Patrol_Easy_4_City_01_01, Patrol_Easy_3_City_01_01, Patrol_Easy_2_City_01_01, Patrol_Easy_1_City_01_01,  
	//Plaques CitizenCrimeAct2, AxisAttack1, CitizenCrimeAct1, MightForRightAct1, PsychicFeedbackLoop1,
	EncounterLayouts AroundDoor, Single, Snatch, Ambush, AroundVandalism, Around, 
	VillainGroups Clockwork, Hellions, Vahzilok, Skulls, Arachnos
}

We basically want to add

ZoneScripts scriptdefs/Holiday_Snow.scriptdef

to the end of the ZoneScripts area of each map we want to enable this on. Once you have done that, save your files, and bin away. When you start the server and enter a zone that has that script, you will be granted the power and it will start snowing. When you leave the map and enter one that does not have the script, the power should go away.