/** * Create a single NPC, optionally make it join a party. Else create blank party. * @param string $classname * @param NULL|SR_Party $party * @return SR_NPC */ public static function createEnemyNPC($classname, $party = NULL) { if (false === ($npc = Shadowrun4::getNPC($classname))) { return Dog_Log::error('Unknown NPC classname in createEnemyNPC: ' . $classname); } if ($party === NULL) { if (false === ($party = SR_Party::createParty())) { return Dog_Log::error('Cannot create party in createEnemyNPC.'); } } elseif (!$party instanceof SR_Party) { return Dog_Log::error('WRONG ARG IN in createEnemyNPC: ' . $party); } if (false === ($npc = $npc->spawn($party))) { return Dog_Log::error('Failed to spawn NPC: ' . $npc->getNPCClassName()); } if (false === $party->updateMembers()) { return Dog_Log::error('DB ERROR IN in createEnemyNPC.'); } $party->recomputeEnums(); return $npc; }
public function onInit() { foreach ($this->getImportNPCS() as $classname) { if (false === ($npc = Shadowrun4::getNPC($classname))) { die("Unknown import_npc {$classname} in city {$this->getName()}.\n"); } $this->npcs[$classname] = $npc; } }
public function getHelpTextNPCs(SR_Player $player) { $npcs = $this->getNPCS($player); # None if (count($npcs) === 0) { return false; } # Single if (count($npcs) === 1) { $cmd = '#' . key($npcs); $classname = array_pop($npcs); $npc = Shadowrun4::getNPC($classname); $npc->setChatPartner($player); return ' ' . $player->lang('hlp_talking1', array($cmd, $npc->getName())); } # Multiple $cmds = array(); foreach ($npcs as $cmd => $classname) { $cmds[] = '#' . $cmd; } return ' ' . $player->lang('hlp_talking2', array(GWF_Array::implodeHuman($cmds))); }