diff --git a/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_bestine.tab b/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_bestine.tab index aa780d55c..fcad10afe 100644 --- a/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_bestine.tab +++ b/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_bestine.tab @@ -26,7 +26,6 @@ delayAction:invasionHalfWayPoint:900 invasion signalMaster;invasionHalfWayPoint;none invasionHalfWayPoint delayAction:cityAttackUnsuccessful:1800 invasion signalMaster;cityAttackUnsuccessful;none cityAttackUnsuccessful -messageTo;defense_camp;wsToggleInvulnerability;none invasion delayAction:invasionCleanup:1 invasionCompleted delayAction:defendersEvacuate:1 defenseLostCity signalMaster;defendersEvacuate;none defendersEvacuate Cleanup objects from the battlefield diff --git a/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_dearic.tab b/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_dearic.tab index eec7a3c22..969368cbc 100644 --- a/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_dearic.tab +++ b/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_dearic.tab @@ -26,7 +26,6 @@ delayAction:cityAttackUnsuccessful:1800 invasion signalMaster;cityAttackUnsuccessful;none cityAttackUnsuccessful delayAction:invasionEndsSoon:1500 invasion signalMaster;invasionEndsSoon;none invasionEndsSoon -messageTo;defense_camp;wsToggleInvulnerability;none invasion delayAction:invasionCleanup:1 invasionCompleted delayAction:defendersEvacuate:1 defenseLostCity signalMaster;defendersEvacuate;none defendersEvacuate Cleanup objects from the battlefield diff --git a/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_keren.tab b/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_keren.tab index 522d2e85f..a55335152 100644 --- a/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_keren.tab +++ b/sku.0/sys.server/compiled/game/datatables/gcw/gcw_city_keren.tab @@ -26,7 +26,6 @@ delayAction:cityAttackUnsuccessful:1800 invasion signalMaster;cityAttackUnsuccessful;none cityAttackUnsuccessful delayAction:invasionEndsSoon:1500 invasion signalMaster;invasionEndsSoon;none invasionEndsSoon -messageTo;defense_camp;wsToggleInvulnerability;none invasion delayAction:invasionCleanup:1 invasionCompleted delayAction:defendersEvacuate:1 defenseLostCity signalMaster;defendersEvacuate;none defendersEvacuate Cleanup objects from the battlefield diff --git a/sku.0/sys.server/compiled/game/script/gm/cmd.script b/sku.0/sys.server/compiled/game/script/gm/cmd.script index ae49f18ca..fbc2a6854 100644 --- a/sku.0/sys.server/compiled/game/script/gm/cmd.script +++ b/sku.0/sys.server/compiled/game/script/gm/cmd.script @@ -411,9 +411,9 @@ commandHandler cmdKill() commandHandler cmdKillPlayer() { - if ( !isIdValid(target) || !isPlayer(target) ) + if ( !isIdValid(target) || !isPlayer(target) || isDead(target) ) { - sendSystemMessageTestingOnly(self, "/killPlayer: you must have a valid player target to use this command"); + sendSystemMessageTestingOnly(self, "/killPlayer: you must have a valid, alive player target to use this command"); return SCRIPT_CONTINUE; } @@ -427,7 +427,8 @@ commandHandler cmdKillPlayer() return SCRIPT_CONTINUE; } - pclib.killPlayer(target, target); + setPosture(target, POSTURE_INCAPACITATED); + pclib.coupDeGrace(target, target, true, true); return SCRIPT_CONTINUE; } diff --git a/sku.0/sys.server/compiled/game/script/library/advanced_turret.scriptlib b/sku.0/sys.server/compiled/game/script/library/advanced_turret.scriptlib index 2d19fccd3..4f665cb23 100644 --- a/sku.0/sys.server/compiled/game/script/library/advanced_turret.scriptlib +++ b/sku.0/sys.server/compiled/game/script/library/advanced_turret.scriptlib @@ -387,6 +387,18 @@ boolean isValidTarget(obj_id turret, obj_id target) return false; } + if(hasScript(turret, "systems.gcw.gcw_turret") && hasScript(target, "ai.smuggler_spawn_enemy")) + { + return false; + //2/1/15: Temp hack so turrets focus on enemy rather than BH NPC's in Bestine + } + + if(ai_lib.isAnimal(target) && hasScript(turret, "systems.gcw.gcw_turret")) + { + return false; + //2/1/15: Temp hack so turrets focus on enemy rather than wild creatures. + } + if(isMob(target) && isIdValid(getMaster(target))) { obj_id cd = callable.getCallableCD(target); @@ -713,4 +725,4 @@ void executeAttackAction(obj_id turret, obj_id target) void doLogging(string section, string message) { LOG("doLogging/advanced_turret.scriptlib/"+section, message); -} \ No newline at end of file +} diff --git a/sku.0/sys.server/compiled/game/script/player/base/base_player.script b/sku.0/sys.server/compiled/game/script/player/base/base_player.script index 61c1ffb32..968dc3167 100644 --- a/sku.0/sys.server/compiled/game/script/player/base/base_player.script +++ b/sku.0/sys.server/compiled/game/script/player/base/base_player.script @@ -4686,12 +4686,14 @@ commandHandler gmRevive() obj_id mountId = getMountId(targetCreature); if (isIdValid(mountId)) utils.dismountRiderJetpackCheck(targetCreature); - + + /* if (isJedi(targetCreature)) { setForcePower(targetCreature, getMaxForcePower(targetCreature)); sendSystemMessageTestingOnly(targetCreature, "Force Power Maxed"); } + */ if (pclib.resurrectPlayer(targetCreature)) { sendSystemMessageTestingOnly(targetCreature, "You have been restored..."); @@ -4706,6 +4708,7 @@ commandHandler gmRevive() setPosture(targetCreature, POSTURE_UPRIGHT); queueCommand(targetCreature, ##"stand", targetCreature, "", COMMAND_PRIORITY_IMMEDIATE); queueCommand(targetCreature, ##"stopCraftingSession", targetCreature, "", COMMAND_PRIORITY_IMMEDIATE); + play2dNonLoopingSound(targetCreature, "sound/music_acq_healer.snd"); utils.removeScriptVar(targetCreature, "pvp_death"); sendSystemMessageTestingOnly(self, "You have /gmRevived "+getName(targetCreature)); @@ -15452,7 +15455,6 @@ commandHandler cmdMeditateFail() return SCRIPT_CONTINUE; } -//IMMA CHARGIN MAH LASZERS messageHandler handleMeditationTick() { if ( !meditation.isMeditating(self) ) diff --git a/sku.0/sys.server/compiled/game/script/systems/gcw/gcw_city.script b/sku.0/sys.server/compiled/game/script/systems/gcw/gcw_city.script index 14d521f5b..d069eb52f 100644 --- a/sku.0/sys.server/compiled/game/script/systems/gcw/gcw_city.script +++ b/sku.0/sys.server/compiled/game/script/systems/gcw/gcw_city.script @@ -1,3 +1,5 @@ +// + include library.ai_lib; include library.colors_hex; include library.factions; @@ -1022,6 +1024,7 @@ messageHandler invasionHalfWayPoint() CustomerServiceLog("gcw_city_invasion", "gcw_city.invasionHalfWayPoint: invasionHalfWayPoint has sent all players messages regarding the combat phase being half over Message sent at: "+getGameTime()+" session: "+params.getInt(trial.MESSAGE_SESSION)); messageToPlayersOnPlanet("notifyPlayerOfGcwCityEventAnnouncement", webster, 0.0f, announcementOrigin, announcementRadius, false); + setInvulnerable(defendingGeneral, false); return SCRIPT_CONTINUE; } @@ -1639,4 +1642,4 @@ messageHandler checkGeneral() } return SCRIPT_CONTINUE; -} \ No newline at end of file +} diff --git a/sku.0/sys.server/compiled/game/script/systems/gcw/gcw_defensive_general_boss.script b/sku.0/sys.server/compiled/game/script/systems/gcw/gcw_defensive_general_boss.script index 84ef97dfd..148b712fb 100644 --- a/sku.0/sys.server/compiled/game/script/systems/gcw/gcw_defensive_general_boss.script +++ b/sku.0/sys.server/compiled/game/script/systems/gcw/gcw_defensive_general_boss.script @@ -1,3 +1,5 @@ +// + include java.util.HashSet; include java.util.Iterator; @@ -468,9 +470,7 @@ messageHandler calculateGeneralHealthAndAbilities() } //Defenses have changed! Adjust the General Health and Resistances - if(currentDefenseCount < defenseObjectCount || - (!buff.hasBuff(self, gcw.BUFF_GENERAL_RESIST_STACK_IMP) && - !buff.hasBuff(self, gcw.BUFF_GENERAL_RESIST_STACK_REB))) + if(currentDefenseCount < defenseObjectCount || (!buff.hasBuff(self, gcw.BUFF_GENERAL_RESIST_STACK_IMP) && !buff.hasBuff(self, gcw.BUFF_GENERAL_RESIST_STACK_REB))) { blog("calculateGeneralHealthAndAbilities the currentDefenseCount has changed and is lower than the OG defenseObjectCount"); @@ -520,7 +520,7 @@ messageHandler calculateGeneralHealthAndAbilities() buff.removeBuff(self, gcwBuffName); blog("calculateGeneralHealthAndAbilities making buff stack: "+newstackAmt); - buff.applyBuffWithStackCount(self, gcwBuffName, newstackAmt); + //buff.applyBuffWithStackCount(self, gcwBuffName, newstackAmt); utils.setScriptVar(self, armor.SCRIPTVAR_CACHED_GENERAL_PROTECTION, newMobGeneralArmor); } diff --git a/sku.0/sys.server/compiled/game/script/theme_park/dungeon/generic_spawner.script b/sku.0/sys.server/compiled/game/script/theme_park/dungeon/generic_spawner.script index 0e22f49ee..4c2daad31 100644 --- a/sku.0/sys.server/compiled/game/script/theme_park/dungeon/generic_spawner.script +++ b/sku.0/sys.server/compiled/game/script/theme_park/dungeon/generic_spawner.script @@ -5,6 +5,8 @@ include library.create; include library.trial; include library.space_dungeon; include library.instance; +include library.locations; +include library.spawning; const string SPAWNED_LIST = "spawned"; const string SPAWNED = SPAWNED_LIST+"."+"spawnNumber_"; @@ -322,14 +324,39 @@ void spawnCreatures(int x, string datatable, obj_id self ) } } //Boss Mob Check is done, and if he's there our spawn string has been updated - - obj_id spawnedCreature = create.object (spawn, spawnPoint); - if (!isIdValid(spawnedCreature)) + + location locTest = spawnPoint; + //Radius check + if(dataTableHasColumn(datatable, "radius")) { - CustomerServiceLog("bad_spawner_data", "spawner " + self + ", datatable " + datatable + ", row " + x + ", mob " + spawn + " doesn't exist"); - removeObjVar (self, SPAWNED + x); - return; + float fltRadius = dataTableGetFloat(datatable, x, "radius"); + if(fltRadius != 0) + { + locTest = spawning.getRandomLocationInCircle(locTest, fltRadius); + } } + + //Planet Level Check + int level = -1; + if(dataTableHasColumn(datatable, "planet_level")) + { + int useLevel = dataTableGetInt(datatable, x, "planet_level"); + if(useLevel != 0) + { + level = getRandomPlanetCreatureLevel(self, spawn, locTest); + + } + } + + obj_id spawnedCreature = create.object (spawn, locTest, level); + + if (!isIdValid(spawnedCreature)) + { + CustomerServiceLog("bad_spawner_data", "spawner " + self + ", datatable " + datatable + ", row " + x + ", mob " + spawn + " doesn't exist"); + removeObjVar (self, SPAWNED + x); + return; + } + if (dataTableHasColumn (datatable, "convo_script")) { @@ -491,3 +518,57 @@ boolean canSpawnByConfigSetting() return true; } + +//Stolen from interior_spawner +int getRandomPlanetCreatureLevel(obj_id spawner, string npcType, location here) +{ + // get planet level range + int minLevel = locations.getMinDifficultyForPlanet(here.area); + int maxLevel = locations.getMaxDifficultyForPlanet(here.area); + + utils.setScriptVar(spawner, "testing_planetMinLevel", minLevel); + utils.setScriptVar(spawner, "testing_planetMaxLevel", maxLevel); + utils.setScriptVar(spawner, "testing_here.area", here.area); + + int level = minLevel; + + //get creature data + dictionary creatureDict = utils.dataTableGetRow(create.CREATURE_TABLE, npcType); + + //dynamic level for planet + if( creatureDict != null ) + { + int baseLevel = creatureDict.getInt("BaseLevel"); + level = baseLevel; + + if ( minLevel > 0 && maxLevel > 0 ) + { + if ( level < minLevel || level > maxLevel ) + { + if ( level < minLevel ) + { + level = minLevel; + } + else if ( level > maxLevel ) + { + level = maxLevel; + } + + CustomerServiceLog ("interior_spawner_level", "Spawner " + spawner + " tried to spawn a creature whose base level from creatures.tab ("+ baseLevel +") was outside of the planet's range ("+ minLevel +" to "+ maxLevel +")."); + } + } + } + + //validate level + if( level < 1 ) + { + level = 1; + } + + /*if( level > 90 ) + { + level = 90; + }*/ + + return level; +}