mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-10-21 11:03:00 -04:00
Added GCW Banners
- Added GCW Banners and the according profession buffs - Fixed some AI issues
This commit is contained in:
+1
-1
@@ -4,4 +4,4 @@ LOAD.BUILDOUT_OBJECTS=1
|
||||
LOAD.RESOURCE.SYSTEM=0
|
||||
|
||||
# Misc
|
||||
CLEAN.ODB.FOLDERS=0
|
||||
CLEAN.ODB.FOLDERS=1
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
core.skillModService.addSkillMod(actor, 'expertise_critical_niche_all', 5)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
core.skillModService.deductSkillMod(actor, 'expertise_critical_niche_all', 5)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
core.skillModService.addSkillMod(actor, 'proc_buff', 1)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
core.skillModService.deductSkillMod(actor, 'proc_buff', 1)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
core.skillModService.addSkillMod(actor, 'expertise_dodge', 2)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
core.skillModService.deductSkillMod(actor, 'expertise_dodge', 2)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
core.skillModService.addSkillMod(actor, 'strength_modified', 100)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
core.skillModService.deductSkillMod(actor, 'strength_modified', 100)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
core.skillModService.addSkillMod(actor, 'constitution_modified', 100)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
core.skillModService.deductSkillMod(actor, 'constitution_modified', 100)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
core.skillModService.addSkillMod(actor, 'precision_modified', 100)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
core.skillModService.deductSkillMod(actor, 'precision_modified', 100)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
core.skillModService.addSkillMod(actor, 'luck_modified', 100)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
core.skillModService.deductSkillMod(actor, 'luck_modified', 100)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
core.skillModService.addSkillMod(actor, 'agility_modified', 100)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
core.skillModService.deductSkillMod(actor, 'agility_modified', 100)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
core.skillModService.addSkillMod(actor, 'expertise_glancing_blow_all', 100)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
core.skillModService.deductSkillMod(actor, 'expertise_glancing_blow_all', 100)
|
||||
return
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'item/gcwbanner')
|
||||
return
|
||||
@@ -1,4 +1,5 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'item/gcwbanner')
|
||||
return
|
||||
@@ -0,0 +1,49 @@
|
||||
from resources.common import RadialOptions
|
||||
import sys
|
||||
|
||||
def createRadial(core, owner, target, radials):
|
||||
radials.add(RadialOptions(0, 21, 1, ''))
|
||||
radials.add(RadialOptions(0, 7, 1, ''))
|
||||
radials.add(RadialOptions(0, 15, 1, ''))
|
||||
return
|
||||
|
||||
def handleSelection(core, owner, target, option):
|
||||
if option == 21 and target:
|
||||
handleBanner(core, owner, target, option)
|
||||
if option == 15 and target:
|
||||
core.objectService.destroyObject(target)
|
||||
return
|
||||
|
||||
def handleBanner(core, owner, bannerinventoryobject, option):
|
||||
|
||||
# check if faction alignment matches
|
||||
if len(owner.getFaction()) == 0:
|
||||
owner.sendSystemMessage('You are not aligned appropriately to use this banner' , 0)
|
||||
return
|
||||
if bannerinventoryobject.getTemplate().find(owner.getFaction()) == -1:
|
||||
owner.sendSystemMessage('You are not aligned appropriately to use this banner' , 0)
|
||||
return
|
||||
|
||||
# check if banner object is not already spawned
|
||||
#if bannerinventoryobject.getAttachment('BannerSpawned'):
|
||||
#owner.sendSystemMessage('Banner already spawned' , 0)
|
||||
#return
|
||||
|
||||
# spawn banner object
|
||||
stcSvc = core.staticService
|
||||
banner = stcSvc.spawnObject(bannerinventoryobject.getTemplate(), owner.getPlanet().getName(), long(0), owner.getWorldPosition().x + 1, owner.getWorldPosition().y, owner.getWorldPosition().z, owner.getOrientation().w, owner.getOrientation().x, owner.getOrientation().y, owner.getOrientation().z)
|
||||
if len(bannerinventoryobject.getStfFilename())>0:
|
||||
banner.setStfFilename(bannerinventoryobject.getStfFilename())
|
||||
if len(bannerinventoryobject.getStfName())>0:
|
||||
banner.setStfName(bannerinventoryobject.getStfName())
|
||||
if len(bannerinventoryobject.getDetailFilename())>0:
|
||||
banner.setDetailFilename(bannerinventoryobject.getDetailFilename())
|
||||
if len(bannerinventoryobject.getDetailName())>0:
|
||||
#banner.setDetailDescription(bannerinventoryobject.getBaseline(6).get("detailedDescription").getString())
|
||||
banner.setDetailName(bannerinventoryobject.getDetailName())
|
||||
bannerinventoryobject.setAttachment('BannerSpawned', True)
|
||||
|
||||
# start buffing process
|
||||
core.buffService.initiateBannerBuffProcess(owner, banner)
|
||||
|
||||
return
|
||||
@@ -540,6 +540,9 @@ public class CreatureObject extends TangibleObject implements Serializable {
|
||||
if (companion != null) {
|
||||
companion.setFaction(faction);
|
||||
}
|
||||
|
||||
if (this.getCalledPet()!=null)
|
||||
this.getCalledPet().setFaction(faction);
|
||||
}
|
||||
|
||||
public void setFactionStatus(int factionStatus) {
|
||||
@@ -550,6 +553,8 @@ public class CreatureObject extends TangibleObject implements Serializable {
|
||||
if (companion != null) {
|
||||
companion.setFactionStatus(factionStatus);
|
||||
}
|
||||
if (this.getCalledPet()!=null)
|
||||
this.getCalledPet().setFactionStatus(factionStatus);
|
||||
}
|
||||
|
||||
public float getHeight() {
|
||||
|
||||
@@ -24,6 +24,7 @@ package resources.objects.tangible;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
@@ -324,11 +325,19 @@ public class TangibleObject extends SWGObject implements Serializable {
|
||||
// All objects can be in combat (terminal mission flag bases, tutorial target box)
|
||||
|
||||
public List<TangibleObject> getDefendersList() {
|
||||
synchronized(objectMutex) {
|
||||
synchronized(defendersList) {
|
||||
return defendersList;
|
||||
}
|
||||
}
|
||||
|
||||
public List<TangibleObject> getDefendersListClone() {
|
||||
synchronized(objectMutex) {
|
||||
List<TangibleObject> returnList = new Vector<TangibleObject>();
|
||||
Collections.copy(returnList, defendersList);
|
||||
return returnList;
|
||||
}
|
||||
}
|
||||
|
||||
public void addDefender(TangibleObject defender) {
|
||||
if (this instanceof CreatureObject){
|
||||
if (((CreatureObject)this).getOwnerId()>0){
|
||||
@@ -337,7 +346,9 @@ public class TangibleObject extends SWGObject implements Serializable {
|
||||
}
|
||||
}
|
||||
}
|
||||
defendersList.add(defender);
|
||||
synchronized(defendersList) {
|
||||
defendersList.add(defender);
|
||||
}
|
||||
|
||||
if (!isInCombat()) {
|
||||
setInCombat(true);
|
||||
@@ -345,7 +356,7 @@ public class TangibleObject extends SWGObject implements Serializable {
|
||||
}
|
||||
|
||||
public void removeDefender(TangibleObject defender) {
|
||||
synchronized(objectMutex) {
|
||||
synchronized(defendersList) {
|
||||
defendersList.remove(defender);
|
||||
|
||||
if (defendersList.isEmpty() && isInCombat()) {
|
||||
@@ -353,7 +364,7 @@ public class TangibleObject extends SWGObject implements Serializable {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public int getPvpBitmask() {
|
||||
synchronized(objectMutex) {
|
||||
return pvpBitmask;
|
||||
|
||||
@@ -21,9 +21,13 @@
|
||||
******************************************************************************/
|
||||
package services;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.Vector;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -34,14 +38,25 @@ import org.python.core.PyObject;
|
||||
import resources.buffs.Buff;
|
||||
import resources.buffs.DamageOverTime;
|
||||
import resources.common.FileUtilities;
|
||||
import resources.common.OutOfBand;
|
||||
import resources.datatables.DisplayType;
|
||||
import resources.datatables.Options;
|
||||
import resources.datatables.Posture;
|
||||
import resources.objects.creature.CreatureObject;
|
||||
import resources.objects.group.GroupObject;
|
||||
import resources.objects.player.PlayerObject;
|
||||
import resources.objects.weapon.WeaponObject;
|
||||
import services.ai.AIActor;
|
||||
import services.ai.states.FollowState;
|
||||
import services.command.CombatCommand;
|
||||
import tools.DevLog;
|
||||
import main.NGECore;
|
||||
import engine.clientdata.ClientFileManager;
|
||||
import engine.clientdata.visitors.DatatableVisitor;
|
||||
import engine.resources.common.CRC;
|
||||
import engine.resources.objects.SWGObject;
|
||||
import engine.resources.scene.Planet;
|
||||
import engine.resources.scene.Point3D;
|
||||
import engine.resources.service.INetworkDispatch;
|
||||
import engine.resources.service.INetworkRemoteEvent;
|
||||
|
||||
@@ -51,6 +66,22 @@ public class BuffService implements INetworkDispatch {
|
||||
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
|
||||
private ConcurrentHashMap<String, Buff> buffMap = new ConcurrentHashMap<String, Buff>();
|
||||
|
||||
private static Map<String,String> bannerBuffMapping = new ConcurrentHashMap<String,String>();
|
||||
static{
|
||||
bannerBuffMapping.put("trader_0a", "banner_buff_trader");
|
||||
bannerBuffMapping.put("trader_0b", "banner_buff_trader");
|
||||
bannerBuffMapping.put("trader_0c", "banner_buff_trader");
|
||||
bannerBuffMapping.put("trader_0d", "banner_buff_trader");
|
||||
bannerBuffMapping.put("entertainer_1a", "banner_buff_entertainer");
|
||||
bannerBuffMapping.put("medic_1a", "banner_buff_medic");
|
||||
bannerBuffMapping.put("officer_1a", "banner_buff_officer");
|
||||
bannerBuffMapping.put("bounty_hunter_1a", "banner_buff_bounty_hunter");
|
||||
bannerBuffMapping.put("smuggler_1a", "banner_buff_smuggler");
|
||||
bannerBuffMapping.put("commando_1a", "banner_buff_commando");
|
||||
bannerBuffMapping.put("spy_1a", "banner_buff_spy");
|
||||
bannerBuffMapping.put("force_sensitive_1a", "banner_buff_force_sensitive");
|
||||
}
|
||||
|
||||
public BuffService(NGECore core) {
|
||||
this.core = core;
|
||||
core.commandService.registerCommand("removeBuff");
|
||||
@@ -349,6 +380,56 @@ public class BuffService implements INetworkDispatch {
|
||||
|
||||
}
|
||||
|
||||
public void applyGCWBuff(String buffName, String factionName, SWGObject center) {
|
||||
Vector<CreatureObject> inRangeObjects = core.simulationService.getAllNearSameFactionCreatures(10, center.getWorldPosition(), center.getPlanet(), factionName);
|
||||
for(SWGObject obj : inRangeObjects) {
|
||||
if(!(obj instanceof CreatureObject))
|
||||
continue;
|
||||
if(obj instanceof CreatureObject && (((CreatureObject) obj).getPosture() == Posture.Dead))
|
||||
continue;
|
||||
CreatureObject buffed = (CreatureObject) obj;
|
||||
if (! buffed.hasBuff(buffName))
|
||||
addBuffToCreature(buffed, buffName, buffed);
|
||||
}
|
||||
}
|
||||
|
||||
public void initiateBannerBuffProcess(CreatureObject buffer, SWGObject banner){
|
||||
|
||||
String factionName = buffer.getFaction();
|
||||
String professionName = buffer.getPlayerObject().getProfession();
|
||||
String buffName = bannerBuffMapping.get(professionName);
|
||||
applyGCWBuff(buffName, factionName, banner);
|
||||
|
||||
final Future<?>[] fut = {null};
|
||||
fut[0] = scheduler.scheduleAtFixedRate(new Runnable() {
|
||||
@Override public void run() {
|
||||
try {
|
||||
if (NGECore.getInstance().objectService.getObject(banner.getObjectID())==null){
|
||||
Thread.yield();
|
||||
fut[0].cancel(false);
|
||||
}
|
||||
|
||||
applyGCWBuff(buffName, factionName, banner);
|
||||
|
||||
if (! buffer.isInQuadtree()){
|
||||
NGECore.getInstance().objectService.destroyObject(banner.getObjectID());
|
||||
Thread.yield();
|
||||
fut[0].cancel(false);
|
||||
}
|
||||
|
||||
if (buffer.getWorldPosition().getDistance2D(banner.getWorldPosition())>1000 || buffer.getPlanetId()!=banner.getPlanetId()){
|
||||
NGECore.getInstance().objectService.destroyObject(banner.getObjectID());
|
||||
Thread.yield();
|
||||
fut[0].cancel(false);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
System.err.println("Exception in GCW Banner thread " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}, 0, 2, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
private void loadBuffs() {
|
||||
try {
|
||||
DatatableVisitor visitor = ClientFileManager.loadFile("datatables/buff/buff.iff", DatatableVisitor.class);
|
||||
|
||||
@@ -119,6 +119,7 @@ public class DevService implements INetworkDispatch {
|
||||
if(creature.getPlayerObject().getProfession().equals("trader_0a") || creature.getPlayerObject().getProfession().equals("trader_0b") || creature.getPlayerObject().getProfession().equals("trader_0c") || creature.getPlayerObject().getProfession().equals("trader_0d"))
|
||||
suiOptions.put((long) 177, "REing");
|
||||
}
|
||||
suiOptions.put((long) 127, "GCW Banners");
|
||||
|
||||
break;
|
||||
case 3: // [Items] Weapons
|
||||
@@ -232,7 +233,7 @@ public class DevService implements INetworkDispatch {
|
||||
|
||||
case 6: // Locations -890,4, -2994 475,6,-3019
|
||||
//core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("talus"), new Point3D(475,6,-3019), player.getOrientation(), null);
|
||||
core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("talus"), new Point3D(618, 4, -2963), player.getOrientation(), null);
|
||||
core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("talus"), new Point3D(264, 4, -2950), player.getOrientation(), null);
|
||||
//core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("talus"), new Point3D(-930,9, -2994), player.getOrientation(), null);
|
||||
|
||||
//core.invasionService.testPylons();
|
||||
@@ -1312,6 +1313,21 @@ public class DevService implements INetworkDispatch {
|
||||
core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("tatooine"), new Point3D(3521,4,-4800), player.getOrientation(), null);
|
||||
return;
|
||||
|
||||
case 127:
|
||||
TangibleObject gcwBanner1 = (TangibleObject) core.objectService.createObject("object/tangible/gcw/pvp_rank_rewards/shared_rebel_battle_banner.iff", planet);
|
||||
gcwBanner1.setStfFilename("static_item_n");
|
||||
gcwBanner1.setStfName("item_pvp_captain_battle_banner_rebel_reward_04_01");
|
||||
gcwBanner1.setDetailFilename("static_item_d");
|
||||
gcwBanner1.setDetailName("item_pvp_captain_battle_banner_rebel_reward_04_01");
|
||||
inventory.add(gcwBanner1);
|
||||
TangibleObject gcwBanner2 = (TangibleObject) core.objectService.createObject("object/tangible/gcw/pvp_rank_rewards/shared_imperial_battle_banner.iff", planet);
|
||||
gcwBanner2.setStfFilename("static_item_n");
|
||||
gcwBanner2.setStfName("item_pvp_captain_battle_banner_imperial_reward_04_01");
|
||||
gcwBanner2.setDetailFilename("static_item_d");
|
||||
gcwBanner2.setDetailName("item_pvp_captain_battle_banner_imperial_reward_04_01");
|
||||
inventory.add(gcwBanner2);
|
||||
return;
|
||||
|
||||
case 164:
|
||||
core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("dantooine"), new Point3D(-284,18,2853), player.getOrientation(), null);
|
||||
return;
|
||||
|
||||
@@ -363,6 +363,17 @@ public class SimulationService implements INetworkDispatch {
|
||||
return foundCreatures;
|
||||
}
|
||||
|
||||
public Vector<CreatureObject> getAllNearSameFactionCreatures(int distance, Point3D centerPos, Planet planet, String factionName){
|
||||
Vector<CreatureObject> foundCreatures = new Vector<CreatureObject>();
|
||||
core.simulationService.get(planet, centerPos.x, centerPos.z, distance).stream().forEach((objecta) -> {
|
||||
if (factionName.length()>0 && objecta instanceof CreatureObject){
|
||||
if (NGECore.getInstance().factionService.isFactionAlly(((CreatureObject) objecta).getFaction(),factionName))
|
||||
foundCreatures.add((CreatureObject)objecta);
|
||||
}
|
||||
});
|
||||
return foundCreatures;
|
||||
}
|
||||
|
||||
public Vector<TangibleObject> getAllNearTANOs(int distance, SWGObject value ){
|
||||
Vector<TangibleObject> foundTANOs = new Vector<TangibleObject>();
|
||||
core.simulationService.get(value.getPlanet(), value.getWorldPosition().x, value.getWorldPosition().z, distance).stream().forEach((objecta) -> {
|
||||
|
||||
@@ -622,6 +622,9 @@ public abstract class AIState {
|
||||
}
|
||||
TangibleObject target = actor.getFollowObject();
|
||||
float speed = (float) creature.getRunSpeed();
|
||||
if (creature.getAttachment("IsSlowVehicle")!=null){
|
||||
speed = (float) creature.getWalkSpeed();
|
||||
}
|
||||
float maxDistance = 6;
|
||||
if(creature.getWeaponId() != 0) {
|
||||
WeaponObject weapon = (WeaponObject) core.objectService.getObject(creature.getWeaponId());
|
||||
|
||||
@@ -151,7 +151,7 @@ public class GCWSpawner extends TangibleObject{
|
||||
System.err.println("Exception in SoldierPatrolPylon->scheduleAtFixedRate->spawnSoldier() " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}, 10, 600, TimeUnit.SECONDS);
|
||||
}, 120, 600, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -275,7 +275,8 @@ public class GCWSpawner extends TangibleObject{
|
||||
}
|
||||
String vehicleTemplate = vehicleTemplates[new Random().nextInt(vehicleTemplates.length)];
|
||||
CreatureObject vehicle = (CreatureObject)NGECore.getInstance().spawnService.spawnCreature(vehicleTemplate, this.getPlanet().getName(), 0L, this.getPosition().x, this.getPosition().y, this.getPosition().z, this.getOrientation().w, this.getOrientation().x, this.getOrientation().y,this.getOrientation().z,-1);
|
||||
|
||||
vehicle.setAttachment("IsSlowVehicle",true);
|
||||
|
||||
NGECore.getInstance().aiService.setPatrol(vehicle, patrolRoute);
|
||||
NGECore.getInstance().aiService.setPatrolLoop(vehicle,false);
|
||||
NGECore.getInstance().invasionService.registerInvader(vehicle);
|
||||
|
||||
@@ -131,7 +131,7 @@ public class InvasionService implements INetworkDispatch {
|
||||
|
||||
setInvasionLocationCenter();
|
||||
|
||||
if (invasionPhase==2 && System.currentTimeMillis()>temptimestartreference + 90000 && ! message1sent){
|
||||
if (invasionPhase==2 && System.currentTimeMillis()>temptimestartreference + 140000 && ! message1sent){
|
||||
sendDefenderMessage1();
|
||||
message1sent = true;
|
||||
System.out.println("Defender msg1 sent ");
|
||||
@@ -556,7 +556,7 @@ public class InvasionService implements INetworkDispatch {
|
||||
fut[0].cancel(false);
|
||||
}
|
||||
|
||||
Vector<CreatureObject> nearAllies = NGECore.getInstance().simulationService.getAllNearSameFactionNPCs(5, barricade);
|
||||
Vector<CreatureObject> nearAllies = NGECore.getInstance().simulationService.getAllNearSameFactionCreatures(7,barricade.getWorldPosition(),barricade.getPlanet(),getFactionName(defendingFaction));
|
||||
for (CreatureObject ally : nearAllies){
|
||||
if (! ally.hasBuff("barricade_defender")){
|
||||
core.buffService.addBuffToCreature(ally, "barricade_defender", ally);
|
||||
@@ -700,9 +700,9 @@ public class InvasionService implements INetworkDispatch {
|
||||
public void sendDefenderMessage1(){
|
||||
String message = "";
|
||||
if (defendingFaction==Factions.Imperial)
|
||||
message = "@gcw:gcw_announcement_rally_for_invasion_imperial_talus_dearic";
|
||||
message = "@gcw:gcw_announcement_man_defenses_imperial_talus_dearic";
|
||||
if (defendingFaction==Factions.Rebel)
|
||||
message = "@gcw:gcw_announcement_rally_for_invasion_rebel_talus_dearic";
|
||||
message = "@gcw:gcw_announcement_man_defenses_rebel_talus_dearic";
|
||||
ConcurrentHashMap<IoSession, Client> clients = NGECore.getInstance().getActiveConnectionsMap();
|
||||
for (Map.Entry<IoSession, Client> entry : clients.entrySet()) {
|
||||
Client client = entry.getValue();
|
||||
@@ -717,6 +717,7 @@ public class InvasionService implements INetworkDispatch {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void sendInvaderMessage2(){
|
||||
String message = "";
|
||||
if (invadingFaction==Factions.Imperial)
|
||||
@@ -898,6 +899,8 @@ public class InvasionService implements INetworkDispatch {
|
||||
|
||||
public void makeDefensiveGeneralDefenderForNPCs(){
|
||||
Vector<CreatureObject> enemies = core.simulationService.getAllNearNonSameFactionNPCs(50, defendingGeneral);
|
||||
if (defendingGeneral==null)
|
||||
return;
|
||||
for (CreatureObject enemy : enemies) {
|
||||
AIActor actor = (AIActor)enemy.getAttachment("AI");
|
||||
actor.addDefender(defendingGeneral);
|
||||
|
||||
@@ -84,7 +84,7 @@ public class DevLogQueuer extends Thread {
|
||||
DevLog.appendToLog(str, path);
|
||||
} catch (Exception iex) {
|
||||
Thread.currentThread().interrupt();
|
||||
throw new RuntimeException("Unexpected interruption");
|
||||
throw new RuntimeException("Unexpected interruption -> Don't worry about it");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user