Jump to content

PepprmintButler

Members
  • Posts

    217
  • Joined

  • Last visited

Everything posted by PepprmintButler

  1. I'm surprised nobody seems to show interest in Command. Any thoughts on that ability ? I was thinking it's quite a nice addition, although potentially OP so it needs to be restricted heavily (certainly not given to everyone). If we can make a perk out of it, I'd love to give it to the Support at Colonel level (instead of Sentinel which I find kind of weak)
  2. I don't know of any. It's one of the 2,000,000 things still not digged up from the upks, or if someone found it they did not share yet AFAIK. I do know that boosting your units' sight range will result in the game crashing, so that's not really an option :/
  3. Did you and an answer through PM, or was that sarcastic ? If you didn't get any, it's most likely because nobody has one yet... I have been following progress on this forum closely and I don't think anyone has come close to achieving what you are asking for.
  4. It wouldn't be such a bad idea to throw your findings around. Sifting through the upks is one the most tedious and time consuming tasks in the modding everybody is doing now, so I'm sure that would help a lot of people here. Some of the more competent modders might even chime in and give us new things faster than we could work out by ourselves.
  5. If I understand this right, this might be the code that ties in Bullet Swarm to the Heavy : (it's in xcomgame.upk/XGUnit) simulated function int GetRemainingActions() { local int maxActions, currentActionsUsed; maxActions = 2; // End:0x48 Loop:False if(m_iFireActionsPerformed == 1 && (GetSoldierClass() != 2)) { currentActionsUsed = maxActions; } // End:0x5b else { currentActionsUsed = m_iMovesActionsPerformed; } return Max(0, maxActions - currentActionsUsed); ie if a firing action is performed, it returns that all actions are used regardless of perks unless soldierclass=2. I didn't check, but my money is on class "2" being Heavy. Modding this out should be fairly easy (some smart person gave a way to skip a whole IF check in the code, in the Next Step thread). Maybe I'll try to look into it if I find the time but honestly my backlog of testing is growing much faster that I can handle right now.
  6. Again, even without lawyers getting involved in any way, modding that gives paying DLC for free gives Firaxis/2K a very good reason to not support the modding community and it's very counterproductive. I really would better see posts giving the means to do that being removed from the Nexus.
  7. Kind of off-thread, but again regarding Character moves, here is some relevant code : (in XGUnit) simulated function int GetRemainingActions() { local int maxActions, currentActionsUsed; maxActions = 2; // End:0x48 Loop:False if(m_iFireActionsPerformed == 1 && (GetSoldierClass() != 2)) { currentActionsUsed = maxActions; } // End:0x5b else { currentActionsUsed = m_iMovesActionsPerformed; } return Max(0, maxActions - currentActionsUsed); } and in XGCharacter defaultproperties { m_bCanOpenWindowsAndDoors=true m_iMaxMoves=2 m_iMaxUseAbilities=1 RemoteRole=ENetRole.ROLE_SimulatedProxy bTickIsDisabled=true bAlwaysRelevant=true } Is that where you found your maxmoves=2 ?
  8. The buildcouncilcountry function is described like this : function BuildCouncilCountry(int iCountry, int iContinent, bool bDeveloped) So the variables (content of the parenthesis) is 1.Country number, 2. Continentnumber, 3."Developped or not" boolean. The third parameter's effect is still unclear but it is unlikely it does what you think it does, unfortunately. Notice there are 16 lines of BuildCouncilCountry, just like the number of council countries. To determine who's who one would need to find where enum m_arrCountries is, which I did not. However with the continents you can do a bit of guessing : Continent 0 has 3 countries Continent 1 has 2 countries Continent 2 has 4 countries Continent 3 has 4 countries Continent 4 has 3 countries My guess is : BuildCouncilCountry(0, 0, true); -> USA BuildCouncilCountry(15, 0, true); -> Canada BuildCouncilCountry(21, 0, false); -> Mexico BuildCouncilCountry(3, 2, true); -> ? in Europe BuildCouncilCountry(1, 2, true); -> ? in Europe BuildCouncilCountry(5, 2, true); -> ? in Europe BuildCouncilCountry(4, 2, true); -> ? in Europe BuildCouncilCountry(2, 3, true); -> ? in Asia BuildCouncilCountry(6, 3, true); -> ? in Asia BuildCouncilCountry(7, 3, false); -> India BuildCouncilCountry(8, 3, true); -> ? in Asia BuildCouncilCountry(20, 1, false); -> ? in South America BuildCouncilCountry(19, 1, false); -> ? in South America BuildCouncilCountry(18, 4, false); -> ? in Africa BuildCouncilCountry(22, 4, true); -> South Africa BuildCouncilCountry(25, 4, false); -> ? in Africa How did I guess that ? Precily due to the true/falses, which from the function description should describe developed or not-developed, or "developing" as is said PC. True is for developed countries, in the real-world economic development sense. I think it was linked to some gameplay mechanic that was sacked (possibly due to hurting people's feelings by categorizing countries as developed or not developed. Finding the listed content of the Countries array would confirm or infirm my theory. Back on the topic of making useful changes, actually adding new countries or cities is impossible for now as we do not have the possibility to change the length of the code in the upk (game refuses to start if you do). What may be possible is to add countries to the council (ie convert a non-council country to a council country) we would actually need to change the used function from BuildCountry() to BuildCouncilCountry() on the later lines. Depending on how these functions are coded in the bytecode, it may or may not be possible with our current tools. If however both functions are the same length we might be on to something. As a first step, switching a council country and a non-council country numbers in the Build function would be a good test. being kind of a noob at upk surgery and bytecode I tried but failed miserably. Maybe someone better suited for the task will come to the rescue... Regarding upk surgery, look at the "the next step" thread, where Daemonjax made a clear tutorial on how to do upk surgery complete with links to the necessary tools. Actually learning with that tutorial might be best ^^ Re : "maxmoves=2 / maxabilities=8", hold your horses for the moment, a lot of these constants are actually linked to nothing and have no effect on the actual gameplay (which is just bad programming on the part of the devs). That's actually easier to mod than the above, so I'll try that and give you a walkthrough of the method if I actually manage to do it. EDIT : I assumed maxmoves=2 (possibly const MAX_MOVES = 2 ?) would be XGTacticalGameCoreNativeBase, like most of the constants. It's not. Would you mind pointing me in the right direction ? (you'll still get credit for the find, if you worry about that ;P )
  9. OK, what the hell is this sorcery ?? I know it's Halloween, but still, creepy... class XComDamageType_AreaBurn extends XComDamageType_Flame hidecategories(Object) native(Weapon); defaultproperties { bDamageUnits=false DamagedFFWaveform=ForceFeedbackWaveform0 KilledFFWaveform=ForceFeedbackWaveform1 } is supposed to correspond to that : 60 4A 00 00 00 00 00 00 4D 4A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 02 00 00 00 00 00 00 00 92 00 00 08 92 FE FF FF 32 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 B8 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 57 65 61 70 6F 6E 00 32 55 00 00 00 00 00 00 52 4A 00 00 The 57 65 61 70 6F 6E is actually the character string Weapon, which gets modified if I touch those bytes, so I know I have the right bits. Yet... I can kill most of the byte code and see no change whatsoever in the result read in UE Explorer ?? I probably tried changing every single byte in that code, yet the only effects I get to defaultproperties{} is to make that function disappear completely. Else it stays with the exact same content, which seems to be located in like 2 bytes ?? This makes absolutely no sense to me. Is Defaultproperties actually a callout to data stored somewhere else ? But there is no xcomdamagetype_areaburn folder in the unpacked upk... Sometimes I really wish I knew what I was doing *sigh*
  10. Since I'm achieving precisely nothing with Xcomdamagetype_Areaburn (for some reason I can't seem to change a thing), let's take another approach. Look what is sitting at the top of XcomDamagetype, looking pretty : static function bool CausesSurroundingAreaDamage(class<DamageType> inDamageType) { // End:0x32 Loop:False if(inDamageType == class'XComDamageType_AreaBurn' || (inDamageType == class'XComDamageType_Flame')) { return false; } return true; } That does seem manageable. Let's find some way to have that loop not return false and we're in business. (bonus : Flame will do damage too now !) EDIT : I realize it's something different now. "surrounding area damage" ? That sounds like something we would want fire to do, but then the other damage types should not. Ideally we should modify both codes and we might get some nice, hurty fires. EDIT2 : changed the operators in the above code, should return true for the the flame & area, but no visible change. I am dissapoint. Back to trying to find change the true/false in the class above... EDIT3 : in the function, if I change a 28 to a 27 a false becomes a true. So that's what I should be looking for in the class. And yet there's no 28 in the class where I tehre clearly should be (bDamageUnits=false). Is the bytecode different for classes !?
  11. The issue is not finding what to write, it's finding where to write it. Namely find the byte corresponding to "false" to put "true" instead. I was expecting a 27, but there's none. I can't find the "=" either - there should be a byte repeating 3 times that would be it (as you can see the == equivalent 9A does not appear either). 4A and 55 are candidates.Will toy and report back.
  12. Seems completely unrelated to the thread, but I'll bite anyway ^^ Where you should be looking is XComGame.upk. What you should be looking for is the function that forces the endturn after shooting. There's probably a check for the bulletswarm perk, which if true returns an exception. If you find that code, it should then be fairly easy to switch some operators around or a jump in order to make all operations go through that exception. The question is, if you manage to do this, can the alien AI handle the new capabilities, or will it continue to shoot only once, or worse bug out ? I guess the only way to find out is to find the code and make the change. I honestly don't know where to start looking. Possibly XComUnitPawn ? XComGame has a whole lot of data to sift through...
  13. Oooooh, awesome find. Congrats. Should be easy to switch. Will try ASAP. EDIT : here's the bytecode for that class. I have no idea where to start on this one. I thought false/true was a 27/28 ? there's none here. 60 4A 00 00 00 00 00 00 4D 4A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 02 00 00 00 00 00 00 00 92 00 00 08 92 FE FF FF 32 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 B8 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 57 65 61 70 6F 6E 00 32 55 00 00 00 00 00 00 52 4A 00 00
  14. The big question is, does eAbility_Squadsight work without the relevant perk ? (quite easy to answer, will try it when I get home). If it does, then it's as simple as any ini mod. I can see problems arising with squadsight aliens though, like alien groups in the fog of war becoming revealed as soon as you bump into another unrelated group. I think I read about something just like that in a related thread actually.
  15. There are multiple threads in the mod talk section about making weapons available for all classes. Start there. You'll see that AnyClass does not always work as intended, and eWP_Sniper and eWP_Heavy have indesirable consequences (a weapon with Sniper will get the short range penalty from the sniper rifle ; a weapon with Heavy will have less ammmo than others, namely 3 shots, like the LMG). Equipping heavies with pistols is more difficult than it sounds, I don't think it has been done yet. There are people looking for workarounds to these problems. Again you can check the progress by looking for the relevant threads in the mod talk section. (or wait for solutions to be found and be posted here, but that might be a while, and I'd rather see you help if you can :) )
  16. Ok cool, I was just making sure there was no misunderstanding. The nice thing is, what you're shooting for amounts to a simple ini mod so it can be distributed right away without much of a hassle :)
  17. I'm with OP. I stopped being scared of Chyssalids pretty quickly ; the spawning hordes of zombies thing is actually the most difficult thing about it. As single enemies (or even 3-packs) they're actually very manageable. Of course they're still a handful at first encounter and maybe a few after that. Which makes me think, when we (hopefully) get modding tools that allow to actually add stuff in instead of just replacing values, I'd love to see an Elite Chryssalid alien in late game, with the enhancements being discussed, while still having the vanilla Chryssalid as it is for the early/mid game. I love the leap attack thing. Technically I think it could be based on the Berserker's Bull Rush ability, that would not be too difficult provided we can modify its AI so that it uses it correctly. That's how I would try to do it anyway. The free attack thing I think is kind of silly. That means insta-death if they come close, regardless of how many hp you have and dice rolls, because it would just keep attacking until you're dead... Giving them a run-and-gun equivalent means they would systematically get a bite on someone unless you have half your team on overwatch. I mean, there are few cases when 2 chryssalid moves won't get them from reveal position to biting range of someone in your squad. Leapers all the way ! (...to our nightmares)
  18. You do realize that this is not how this Aim thing works right ? Turn 1 : Aim or move & Aim, turn ends Turn 2 : Shoot with bonus or move and shoot with bonus Turn 3 : back to normal. An aim-like ability that costs "1AP" (ie does not end the turn if first action) would be nice though. But then the +20 would be way too much.
  19. Good job anyway :) looking forward to the beta. We can certainly wait a few more days.
  20. See thededicated post for more details. There's still work to be done to have it working well. Note : the "bring the engine to its knees" bit is a reference to what Jake S said in an interview I can't seem to find anymore, but I believe was on Rock Paper Shotgun ; he said that they had tried to put a flamer in the game put cut it from release because the fire would just propagate all over the map and "bring the engine to its knees". I suspect it could put an xbox or ps3 in trouble, but my PC at least seems to be handling it perfectly fine. (and yes I did set a whole map on fire. Of course I have.)
  21. So as discussed in the Compiled list... post I dug out an ability that seems to have been intended for the legacy Flamer weapon and some other ones that are not used in the released vanilla game, 1. Torch What it looks like : Aiming mechanic http://i.imgur.com/zZJv4.jpg Using it (you see the weapon animation + fires starting) http://i.imgur.com/p2NVK.jpg The fire propagates each turn ! (I guess this is what is supposed to "bring the engine to its knees", although I suspect that's not a problem with a decent PC) http://i.imgur.com/pBRYh.jpg How to activate it : It's an eAbility, eAbility_Torch. Add it to any weapon (or even directly to Soldier) to make it useable. No perk or the like needed. How it works / what's wrong with it : You can activate it. There is a dedicated aiming interface. The animation is not perfect, but it works ; it does set the targeted area on fire. The engine seems to handle it perfectly well. Problems : 1. Range seems to be unlimited ? 2. Aiming at an enemy seems to start the fires centered on the casting soldier rather than the enemy ; also, the "napalm jet" (simulated) seems to get caught on objects in line of sight to the aimed area 3. Most problematically, no damage is done by the flames ! This problem is actually not limited to this ability and more linked to how fire/flames are handled in general. e.g., the titan armor provides immunity to flame damage, but have you ever seen flame damage ? I sure haven't. What the titan armor does is allow you to walk in tiles on fire ; without it you just can't go into those tiles. One solution would be to add damage dealing to the aimed area on activation, but it sounds like it would need code injection (I still haven't found the functions governing ability effects). Another good thing would be to modify the fire mechanic, maybe make the tiles accessible but inflict damage/turn to anyone in it - of course that sounds more complicated than what we are able to do now. 4. It's only an eAbility ; the flamer weapon itself is still nowhere to be found. It cannot be handled as a soldier Perk in this form 2. Aim What it looks like : Targets self, gives +20 aim for 2 turns, ends turn. Complete with ability title and description (but no bonus status text in info window). The icon http://i.imgur.com/G01ya.jpg Targeting/description http://i.imgur.com/Bgtql.jpg Used http://i.imgur.com/56GrY.jpg How to activate it : It's an eAbility, eAbility_Aim. Add it to any armor or weapon (or even directly to Soldier) to make it useable. No perk or the like needed. How it works / what's wrong with it : Works perfectly fine. Problems : 1. Would be best to have a bonus descriptor in info panel, but really not necessary 2. Would be best as a perk, but just an ability at the moment. Maybe one of the unused perks can be redirected to this ability ..? 3. Command What it looks like : Targets an ally with no actions left. Gives that ally an action back (equiv. to a second action) Targeting http://i.imgur.com/QouCI.jpg After use (able to move or use ability again, even though no actions left) http://i.imgur.com/AMnyt.jpg How to activate it : It's an eAbility, eAbility_Command. Add it to any armor or weapon (or even directly to Soldier) to make it useable. No perk or the like needed. How it works / what's wrong with it : Works fine functionally. Problems : 1. Has no description, animation of voice (cosmetic) 2. "commanded" soldier can act again but does not have an "action bar" back, which is a bit confusing (cosmetic) 3. Would work best as a Perk rather than an Ability (would be lovely as a high-rank Support perk, although it might be a bit OP). Hopefully we can repurpose and unused perk for this one. 4. Others needing testing eAbility_ShotPaintTarget - targets enemy ; no effect found eAbility_MotionDetector - same icon as battle scanner ; targets self, bugged, no effect eAbility_Berserk - has icon, targets self, effect TBD (seems to up offense by 10, probably something else too) eAbility_HeatWave - Has a corresponding perk. No successful use yet. Needs more testing 5. Alien abilites As stated in another post, I had success giving soldiers alien abilties as perks, most notable Mind Merge and the floater's Launch.
  22. I believe the question was meant to be, how to I edit the values in the PACKED file. Answer is, the same way you edit the unpacked files : hex editor. The packed upk and the unpacked folder have the exact same content. The unpacked upk (folder) has the code in individual files ; the packed upk has it all in one continuous chunk of code. Once you found the part of the code that you wish to modify, probably by using UE Explorer and navigating the unpacked upk folder for the relevant file, you can search the packed upk for the same code as in the GetPerkInTreeAssault.Function file or other. Of course there's a lot more to search in so you need to search for longer strings (e.g. the first two lines of code in GetPerkInTreeAssault.Function). Once you found the section of the upk that contains the function or other that you want to edit, you can edit it there directly and save yourself the trouble to repack the upk. I hope that was clear. I kinda doubt it was. It's 3 am here, not the best time to get into technical 'splanations...
  23. It's a good start. You gost most of it right. Regarding the ini, I don't know of any differences between game versions. I'm 99% positive that all versions use exactly the same defaultgamecore.ini (there are slight differences in other, non-cooked inis due to language mostly). The modding using resource hacker part needs more a'splaining; there are more direct methods than the one you quoted. (will write up on it later if needed) What is most lacking is the whole upk "surgery" modding, which is where the meat of it is. It's much more interesting, and much more difficult. Seeing as some leading modders are releasing today an Alpha version of a tool that should make it much, much easier than it is know, you might as well wait for that before getting into it.
  24. OK, let's start with what we have : XGWeapon has defaultproperties { iAmmo=100 and function ApplyAmmoCost(int iCost) { iAmmo -= iCost; // End:0x2e Loop:False if(iAmmo == 1) { iAmmo = 0; } } Based on that it would be reasonable to suppose that ammo consumption by class is defined with iCost. Which I cannot find anywhere. BTW, XGWeapon has a whole lot of functions related to a Overheat mechanic, possibly intended for lasers, and which are activated by eWP_Overheats. I haven't tested it yet but it sounds interesting.
  25. Yeah, weapon properties are not in the savegame file so you can change them in loaded games, no problem. It does not work for soldiers but should for everything else. Thanks for the kind words. You'll probably like the new batch of tests down in that thread then :biggrin:
×
×
  • Create New...