/********************************************************************** * Copyright (c)2000-2002 Sony Online Entertainment Inc. * All Rights Reserved * * Title: battlefield_spawner * Description: script that goes on battlefield spawners in PVE battles. * * @author $Author:$ * @version $Revision:$ **********************************************************************/ /***** INCLUDES ********************************************************/ include library.battlefield; /***** CONSTANTS *******************************************************/ const string VAR_NUMBER_SPAWNS = "battlefield.number_spawns"; /***** TRIGGERS ********************************************************/ trigger OnInitialize() { // Spawned mobs don't persist, so clear the population and spawn counter. setObjVar(self, battlefield.VAR_SPAWNER_CURRENT_POPULATION, 0); setObjVar(self, battlefield.VAR_SPAWNER_CURRENT, 0); // Restart the spawner int pulse = getIntObjVar(self, battlefield.VAR_SPAWNER_PULSE); messageTo(self, "msgBattlefieldSpawn", null, pulse, false); return SCRIPT_CONTINUE; } /***** MESSAGEHANDLERS *************************************************/ messageHandler msgBattlefieldSpawn() { LOG("LOG_CHANNEL", "battlefield_spawner::msgBattlefieldSpawn -- " + self); int num_spawns = 0; if (hasObjVar(self, VAR_NUMBER_SPAWNS)) { num_spawns = getIntObjVar(self, VAR_NUMBER_SPAWNS); } int max_spawns = getIntObjVar(self, battlefield.VAR_SPAWNER_MAX); int pulse = getIntObjVar(self, battlefield.VAR_SPAWNER_PULSE); region bf = battlefield.getBattlefield(self); if (bf == null) return SCRIPT_CONTINUE; obj_id master_object = battlefield.getMasterObjectFromRegion(bf); // Generate some spawn battlefield.createRandomSpawn(master_object, self); num_spawns--; if (num_spawns < max_spawns) { // Send a message for the next spawn. messageTo(self, "msgBattlefieldSpawn", null, pulse, false); } return SCRIPT_CONTINUE; } /***** COMMANDHANDLERS *************************************************/ /***** FUNCTIONS *******************************************************/