Jump to content

Faultline

City Council
  • Posts

    606
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by Faultline

  1. Re: enemies, there's a thread to collect those: Re: maps, it really depends on available time vs. how much a map is wanted; most newer maps aren't set up with generic spawn points that AE can understand and all the spawn points need to be re-placed from scratch in order to make them available.
  2. No critter power is the exact same as a player version, because players get enhancements and critters don't. I should have said "it's most similar to" Phalanx Fighting, since the critter version also has Mez resistance. https://cod.uberguy.net/html/power.html?power=brute_defense.shield_defense.phalanx_fighting https://cod.uberguy.net/html/power.html?power=romans.praefectus.energized_shield Numbers are confirmed to be the same they used to before the power was removed from the critters; the power itself was there and hasn't changed, but the critter definitions weren't using it.
  3. General This is a support patch for the Cimerora Contest for Mission Architect. Please check that thread for more information! Mission Architect Map changes: Cimerora - Battle Map: split into front, middle and back regions. Cimerora - Castellum Quarter: newly released map. Cimerora - Sybil Temple: split into front, middle and back regions. Cimerora - Vespillos Pass: newly released map. Added the following critters and enemy groups to Architect: Angry Citizens (1-5) Cimerorans (35-54): Immunes Surgeon, Peasant, Sybil, Marcus Valerius, Sister Airlia, Sister Valeria Cimeroran Beasts (35-54): Minotaur (four versions), Cyclops (four versions) Cimeroran Traitors (35-54): Immunes Surgeon Cimeroran Traitors (50-54) Civilian (1-54): Alexis Cole-Duncan, Emperor Marcus Cole Decaying Eidolons (29-54) Diabolique Spirit (50-54): Shadow Lord, Shadow Mistress, Shadow Demon Pandora's Might (40-50) Praetorian Police (1-24): Cole's Clone (two versions) Prisoners (30-38) The Cabal (25-34): Sprite Tyrant Follower (50-54): Olympian Guard, Tyrant (50-54) UPA (30-54) Added contacts from Dark Astoria: Captain Nolan, Dream Doctor, Ephram Sha, Heather Townshend, Maharaj, Max, Midnight Loremaster, Mu'Vorkan, Praetor Duncan Added contact from Cimerora: Sister Solaris Renamed "Carnie" enemy group to "Carnival of Shadows" for consistency with "Carnival of Light", "Canival of Vengeance" and "Carnival of War". Made some changes to the arc validation to prevent published story arcs from being invalidated by these changes. Arcs that have not been published yet may still become invalid, or have certain parts of it change; please double-check your arcs before publishing. Powers The power "Energized Shield" that most Cimeroran critters should have was accidentally removed during a previous patch. It has been restored, with a bit of a naming shuffle: "Energized Shield" actually had the effects of the power "Phalanx Fighting" from Shield Defense, so it has been renamed to match that. Cimerorans also had a "Phalanx Fighting" power which was just a basic self defense auto, so it has been renamed to "Roman Armor". There were no changes to the actual powers, just the names. Cimerorans have the exact same powers they had from their release until Issue 24, besides the name changes.
  4. General This patch is being fast-tracked to Live to support the Cimerora Contest for Mission Architect. Please check that thread for more information. Mission Architect Map changes: Cimerora - Battle Map: split into front, middle and back regions. Cimerora - Castellum Quarter: newly released map. Cimerora - Sybil Temple: split into front, middle and back regions. Cimerora - Vespillos Pass: newly released map. Added the following critters and enemy groups to Architect: Angry Citizens (1-5) Cimerorans (35-54): Immunes Surgeon, Peasant, Sybil, Marcus Valerius, Sister Airlia, Sister Valeria Cimeroran Beasts (35-54): Minotaur (four versions), Cyclops (four versions) Cimeroran Traitors (35-54): Immunes Surgeon Cimeroran Traitors (50-54) Civilian (1-54): Alexis Cole-Duncan, Emperor Marcus Cole Decaying Eidolons (29-54) Diabolique Spirit (50-54): Shadow Lord, Shadow Mistress, Shadow Demon Pandora's Might (40-50) Praetorian Police (1-24): Cole's Clone (two versions) Prisoners (30-38) The Cabal (25-34): Sprite Tyrant Follower (50-54): Olympian Guard, Tyrant (50-54) UPA (30-54) Added contacts from Dark Astoria: Captain Nolan, Dream Doctor, Ephram Sha, Heather Townshend, Maharaj, Max, Midnight Loremaster, Mu'Vorkan, Praetor Duncan Added contact from Cimerora: Sister Solaris Renamed "Carnie" enemy group to "Carnival of Shadows". Made some changes to the arc validation to prevent published story arcs from being invalidated by these changes. Arcs that have not been published yet may still become invalid, or have certain parts of it change; please double-check your arcs before publishing.
      • 5
      • Like
      • Thanks
      • Thumbs Up
  5. I'm building it for Staging today, live on Tuesday with the weekly restart.
  6. This may have to go live as-is because after poking at it for over a week I'm no closer to figuring out why it's happening. It may be a quirk of outdoor maps and the fake "rooms" used to split it in front/middle/back, but at this point I'm out of time to find the solution without impacting the Cimerora contest a lot. I hope to have it fixed by Page 3 release.
  7. This appears to be common for outdoor maps; both City 01 and City 01 Council had no icons when I tested the problem. If you have an example of an outdoors only map that shows those icons, I can take a look and see what's different.
  8. That would explain why I can't repro on my end. Can you confirm you get all the regular objectives if the defeat all is removed? The screenshot for the contest post was made on the CQ map with the minotaur and cyclopes taking the three boss slots with no issues.
  9. This isn't new, try it on Live by setting the mission group to something like Crey (30-54) and add a Release Captive objective with a Coralax Blue Hybrid (Lieutenant 1-9) and the misison will give you the exact same error. Added it to the issues tracker as something to look into in the future, but this is not a beta bug.
  10. So now that this patch is up on Brainstorm, I'm going to explain why some critters didn't make it in. Here's the ground rules, as discovered through much poking of the Architect data files: While Architect defines villaingroups which contain specific critters, it still validates them using the original enemy groups. I can't make an enemy group called "Praetorian AVs" that include Diabolique and Tyrant, because the former is in the "Diabolique's Spirits" enemy group, and the latter is in the "Tyrant's Followers" enemy group. The critters have to go to the original enemy group they belong to. I did make some effort to change this, but it's so deeply ingrained that I gave up for now; may revisit in the future. Some critters are set to not spawn by default, and adding them to an Architect villaingroup doesn't change that. The "Demons of Diabolique" group is actually composed of three critters in the "Diabolique's Spirits" group (the different name is just visual) that are set to not spawn by default, and are instead spawned manually in the specific mission that uses them. So while they have been added to Architect, in order to use them you will still need to create a custom villaingroup and add those three critters from "Diabolique's Spirits" in. Enemy groups must contain at least one minion, lieutenant and boss in the range, that can spawn by default. Some of the requested villaingroups fail this; Cap Au Diable Demons is only minions (and only two types, which only vary by a power) so those are out at the moment. A villaingroup can be defined to be treated as a "Bosses Only" group, in which case it doesn't need to have all three ranks, but it doesn't accept minions and lietenants in it - so that's out for the Cap Demons as well. I'll look into extending the "Bosses Only" groups to take also minions and lieutenants, but that may break things so I shelved it for the future. Some critters have powers or mechanics that only make sense as part of a scripted trial, so they can't be added. Angry Citizens exists at level 50 as part of the TPN trial, but they are scripted to only run to specific markers that only exist in the TPN trial, so they're out. Having said all that, there are more critters on the first post that can and will be added, they just didn't make it for this patch, which is being fast-tracked to support the Cimerora contest. More will be probably added in Page 3.
  11. General This patch is being fast-tracked to Live to support the Cimerora Contest for Mission Architect. Because it's being fast-tracked, it doesn't include some of the cheats that you're used to seeing in Brainstorm, such as the Freebies Menu and all recipes being free of Salvage costs. Those will return after this patch is promoted to Live, hopefully as early as next Tuesday. Mission Architect Map changes: Cimerora - Battle Map: split into front, middle and back regions. Cimerora - Castellum Quarter: newly released map. Cimerora - Sybil Temple: split into front, middle and back regions. Cimerora - Vespillos Pass: newly released map. Added the following critters and enemy groups to Architect: Angry Citizens (1-5) Cimerorans (35-54): Immunes Surgeon, Peasant, Sybil, Marcus Valerius, Sister Airlia, Sister Valeria Cimeroran Beasts (35-54): Minotaur (four versions), Cyclops (four versions) Cimeroran Traitors (35-54): Immunes Surgeon Cimeroran Traitors (50-54) Civilian (1-54): Alexis Cole-Duncan, Emperor Marcus Cole Decaying Eidolons (29-54) Diabolique Spirit (50-54): Shadow Lord, Shadow Mistress, Shadow Demon Pandora's Might (40-50) Praetorian Police (1-24): Cole's Clone (two versions) Prisoners (30-38) The Cabal (25-34): Sprite Tyrant Follower (50-54): Olympian Guard, Tyrant (50-54) UPA (30-54) Added contacts from Dark Astoria: Captain Nolan, Dream Doctor, Ephram Sha, Heather Townshend, Maharaj, Max, Midnight Loremaster, Mu'Vorkan, Praetor Duncan Added contact from Cimerora: Sister Solaris Renamed "Carnie" enemy group to "Carnival of Shadows". Made some changes to the arc validation to prevent published story arcs from being invalidated by these changes. Arcs that have not been published yet may still become invalid, or have certain parts of it change; please double-check your arcs before publishing.
  12. Remove boosters and catalysts from the drop tables, remove the super packs from the auction house and disable incarnate abilities outside of missions built for them? Sure, I take it you're volunteering to deal with everyone carrying pitchforks and torches?
  13. You know, I have been playing Minecraft lately with the 1.17 update and started from scratch on a new server. I was actually surprised how difficult the game is when you're starting out with unenchanted iron armor. I died 5 times to creepers falling on my head, something I had grown used to ignoring as barely a nuisance. Exploring a big ravine was actually stressful and difficult. I started to wonder if the new terrain generation that creates much larger caves had caused a difficulty spike. Then I got a full set of Diamond (not even Netherite) armor with Protection IV, and went back to having 5 creepers *at once* explode on me and not even register in my health. My point is, this is not a COH or HC issue. If you grind to get the best stuff in the game, expect difficulty to become trivialized. COH with invention sets, incarnates and level shifts is like Minecraft with fully enchanted Netherite armor *and* potion spamming while eating golden apples. You can't balance normal game content against that, you'll murder all your players. We can certainly add new content that is challenging for Incarnates, but a spike in difficulty across the board is a non-starter; it would be a lot of work that most people would just be angry about because their character feels nerfed. Difficulty settings don't really help here because critters can't go past level 54, and level shifts are granted via powers. Enemies in Dark Astoria belong to different enemy groups (eg. ArachnosEndgame) in order to have more difficult versions of the critters without affecting existing content.
  14. Invention recipe drops don't check for villaingroups at all. Invention salvage drops do, and Cimerorans are on the Magic group alongside a bunch of other groups. I'm not seeing anything that would result in them having less drops than any other group. Need more information on where the perceived lack of IO drops is.
  15. Again: you are not taking into account the expense of parsing the text string in the first place. Remember this is done at run-time -- there is no compiler translating the string into nice checks. Everything you said is true when you're writing code to be compiled, because then all the string parsing is done at compile time. But when the string parsing is done at run-time, the extra processing expense is much, much higher.
  16. But think about all the processing power you'd have to waste parsing the expression in the first place. The equivalent expression in more legible code would be char(level) == 50 && (!TokenOwned(EnhancementCatalystToken) || ((now() - TokenTime(EnhancementCatalystToken)) > 72000)) and just parsing that at run-time would use more power than the few "wasted" calls. RPN means it just executes the function calls one after another, without having to first figure out what it should be executing first. Think about it, what uses more processing power: fetching the current time, subtracting 0 from it, ORing and then ANDing it; or lots of string manipulation to find parenthesis and checking order of operations when there's not enough parenthesis? String manipulation may seem trivial nowadays, but try writing an evaluator for it in assembly and you'll quickly be singing the praises of RPN. MOV, SUB, OR and AND are a single processor instruction each. String parsing needs hundreds or thousands of instructions. In other words: you spent ~1000 instructions parsing in order to decide that you don't need to run ~50 while performing checks. Sure, it's better than running all ~1050, but with RPN you just evaluate the whole thing using ~100. When functions are this simple (nothing the evaluator looks at takes more than 10 lines of code) it's just more efficient to let it run.
  17. The opposite! It's actually very simple, because it does the parameters in order, left-to-right; no need to check for order of operations or to use parenthesis. It just needs a stack: - If the next token is a value, PUSH it to the stack. - If the next token is a function, POP parameters (as many as the function needs) then PUSH the result At the end of the evaluation, the stack should have the final value, and only the final value - if more than one value is left in the stack (or you can't POP enough arguments for a function at any time), the requested evaluation was malformed. If you never coded in assembly or have the concept of a stack it will seem odd, but this is super natural for a computer. You could easily write a RPN evaluator in assembly for any system with a stack. The performance gains from this simple parsing outweight short-circuiting gains on anything but the most insanely complex expressions.
  18. Here's a real-life example with the Enhacement Catalysts, since they were mentioned before. Every time you defeat an enemy of Boss rank, it triggers the Boss reward table (simple enough). That table has a lot of different rewards with various chances, this is one of them: Chance 3 Everyone { Requires level char> 50 == EnhancementCatalystToken TokenOwned? ! now EnhancementCatalystToken TokenTime> - 72000 > || && DropGroup 100 { ItemSetName PL.EnhancementCatalystDrop, RT.EnhancementCatalystToken } } The first line means that this specific reward has a 3% chance to trigger for everyone on the team. The second line is the actual requirements string. This is using what is known as Reverse Polish Notation, which will look bizarre if you never saw it before; it's a type of evaluator that is very simple to implement for a computer, and used in scientific calculators. The rewads code sees that this reward has a Requires string (if it doesn't have one, it always triggers) and ships it to the evaluator, asking the evaluator, "hey, what is the result of this gibberish". The evaluator then does the following: - Call the char> function with the level parameter. Let's say this returns 50. - Call the TokenOwned? function with the EnhancementCatalystToken parameter. Let's say this returns true. - Call the function now (no parameters) to get the current time (in seconds). At the time I'm writing this, it would be 678483161. - Call the function TokenTime> with the parameter EnhancementCatalystToken to get the time (in seconds) that the token was awarded. Let's say it returns 678480000. At this point, we've translated the Requires to look like this: 50 50 == true ! 678483161 678480000 - 72000 > || && - Call the == (equals) function with the parameters 50 and 50. This returns true. - Call the ! (negate) function with the parameter true. This returns false. - Call the - (subtract) function with the parametes 678483161 and 678480000. This returns 3161. I'm now going to show the evaluator after every step since seeing all the functions piled up at the end often confuses people: true false 3161 72000 > || && - Call the > (greater than) function with the parameters 3161 and 72000. This returns false. true false false || && - Call the || (OR) function with the parameters false and false. This returns false. true false && - Call the && (AND) function with the paramters true and false. This returns false. The evaluator is now done and tells the rewards code "the requirements evaluated to false". The rewards code goes "thanks bro" and doesn't give the reward. What failed here? You were level 50, but you had a token marking that you recently received a catalyst, and the timestamp says you received it 3161 seconds ago -- which is less than the 72000 seconds allowed between drops (20 hours). The rewards code didn't look at your character level, didn't look at your tokens, didn't look at the current time; and the evaluator didn't either, it just called functions that did. This means that a bug in the evaluator would affect any functions it calls, because it doesn't know the difference (so no way it's just the badges one) and a bug in an evaluator function would only affect that one function (so no way for a reward that isn't checking for badges to be affected by the badges owned function). I "solved" the above function a bit out of order to make it more legible, but RPN always works left-to-right; Here's the same example, but assume that you don't have the EnhancementCatalystToken (and because of this, TokenTime> returns 0), in the way that it would actually be processed: level char> 50 == EnhancementCatalystToken TokenOwned? ! now EnhancementCatalystToken TokenTime> - 72000 > || && 50 50 == EnhancementCatalystToken TokenOwned? ! now EnhancementCatalystToken TokenTime> - 72000 > || && true EnhancementCatalystToken TokenOwned? ! now EnhancementCatalystToken TokenTime> - 72000 > || && true false ! now EnhancementCatalystToken TokenTime> - 72000 > || && true true now EnhancementCatalystToken TokenTime> - 72000 > || && true true 678483161 EnhancementCatalystToken TokenTime> - 72000 > || && true true 678483161 0 - 72000 > || && true true 678483161 72000 > || && true true true || && true true && true The evaluator returns "the requirements evaluated to true", the rewards code goes "thanks bro" and gives the reward. The reward in this case is EnhancementCatalystDrop (which drops the actual catalyst) and EnhancementCatalystToken (which gives the token mentioned above, to check it the next time the reward triggers).
  19. No, that is too simplistic a view because it assumes the code is looking at badges directly, which is isn't. The requirements are a string which is basically a list of functions and parameters. For example, if the requirements are "onMissionMap? VanguardEnabled owned? &&", the evaluator code would: - Run the "onMissionMap?" function and get a result of 1 or 0. - Run the "owned?" function with the "VanguardEnabled" parameter and return 1 or 0. - AND both values together to get a final result of 1 or 0. The "owned?" function is the one that would check for a badge, but that's not something the evaluator knows, it just goes through the list of functions and gets results. And more critically, if the Requires text doesn't have any calls to "owned?", then the code that checks for a badge is never called at all for that evaluation.
  20. The reward side doesn't look at what badges you have got at all. Rewards can have requirements that go through a general evaluator which can check badges, the enemy group you defeated (Vanguard Merits use both), what powers you have (Windfall uses this), whether you are in a zone or mission map (Tour Guide tips), whether the map is Arena or Architect (used to disable things like Candy Canes in those) and a lot of other things. But the rewards code just hands off that list of requirements to the evaluator (which is just a line of text, like "VanguardEnabled owned? onMissionMap? && Loot_Booster ownPower? &&"), it doesn't look at anything directly, and the evaluator doesn't look at badges unless the requirements passed explicitly ask for it. No rewards check for any veteran badges. The same evaluator is used *everywhere* for many things, so any bug on it would be instantly and very obvious.
  21. Are you willing to take the harsh diminishing returns that the PvP versions have for it?
  22. This is planned but not before page4, page3 will add the remaining Tour Guides for the 15ish zones that have exploration accolades but no tour guides. The mission team is working on other content for page3 that has priority over the historian badges.
  23. PvP Powers Changes These changes will not be going live in this patch - they are for testing only. Please provide your feedback if you would or would not like to see these changes go live! All travel power speed cap increases from Issue 27, Page 2 now also apply in PvP Modified the PvP diminishing return curves for travel speeds for testing purposes SpeedRunning set to 0.45, SpeedFlying set to 0.60, SpeedJumping set to 0.45 Sorcery > Arcane Bolt / Arcane Power Arcane Power can now trigger in PvP Damage bonus in PvP is 50% of the base damage rather than 100% Fortunata Hypnosis (IO proc): PvP placate effect reduced from 5.336s to 4s This puts it in line with the Presence pool's Pacify, which also does 8s PvE and 4s PvP Electrical Affinity: Rejuvenating Circuit: Increased the Main Target heal to do an extra 0.41 scale in PvP only. This makes the main target get the equivalent of a 1.96 scale heal (same as Heal Other from Empathy). The chain heal still works off of the 1.55 scale heal, so no change for the healing of secondary targets. Faraday Cage: Increased the duration of PvP-only effects to 20s (up from 5s). This includes mez protection, mez resistance, kb protection and repel protection. The other effects (PvE and Both) still use 5s. This increase in duration is to allow PvPers to have more time outside of the faraday cage bubble before wearing off. Faraday Cage: Decreased the activation period from 1 second to 0.2 second. The faster rate should allow for the Faraday Cage buffs to apply more quickly/reliably when moving through the Faraday Cage bubble. Note: This does not affect Static build up, that will still use a 5s activation period. Super Reflexes PvP tweaks (All ATs): Lowered the activation period of powers with scaling resistance from 2s to 0.5s (all ATs) Increased PvP Elusivity in Focused Fighting, Focused Senses and Evasion to 20%. Reverted scaling resistance and scaling elusivity changes from last patch. Added Toxic Resistance to all scaling resistance powers (all ATs) Bug Fix: Corrected Brute's Evasion elusivity duration. It was set to 0.75s when it was supposed to be 2.25s. This resulted in AoE elusivity dropping out between each 2s tick application. EMP Arrow PvP tweaks: Increased the duration of all PvP effects to 20s (up from 0.65s). This will allow players to buff themselves inside the EMP field, then exit for up to 20s of protection. These effects only include the following: Resistance to Mez, Teleport Protection to Mez, Knock, and Repel Power Surge and Unstoppable PvP tweaks (All ATs): Removed the HP crash Added Psionic Resistance (2.45 scale). The amount of psionic resistance is 35% of what the T9 typically gives to other damage types. Granite Armor PvP tweaks (All ATs): Added Psionic Resistance (1.75 scale). The amount of psionic resistance is 35% of what Granite Armor gives to other damage types.
  24. Assuming Sunrise uses Tequila-compatible manifests, it is located at https://patch.savecoh.com/manifest.xml for the live servers and https://patch.savecoh.com/beta.xml for the beta servers.
  25. This is not always the case - each Paladin Construction site is actually composed of many "Heap" spawn locations and one "PaladinEvent" spawn location. When the "PaladinEvent" spawn triggers, it spawns gear piles or waves of clockwork in the "Heap" spawn locations, and those spawns created by the event script will follow the Paladin when he is finished building. But those "Heap" locations can, and will, spawn either gear piles or clockwork defenders on their own, without the event being active, and those spawns, generated by the normal spawn mechanics of the game, will not follow the Paladin once its built. Note that currently, each spawn location is set to wait a random number between 0.001 and 36 hours before spawning the Paladin. If the event is too rare I can easily lower the maximum time, but that's what it was set during the entire lifetime of the game and I saw the event relatively often.
×
×
  • Create New...