Jason777 Posted June 26, 2013 Share Posted June 26, 2013 (edited) ovl_en_arow_trap_util v1 -- 26 June 2013 To turn actor 0x0081 into something useful, I have released the following custom or modified actors (the following are folder names where the actors reside): [*]En_Arow_Trap_Mod : A modification of actor 0x0081 with a few bugs and checks removed [*]En_Vase_Mod : An actor which utilizes actor 0x0081 (highly modified actor 0x0082) [*]Unused_C : A custom actor which was meant to replace actor 0x0081, but was not used The actor within En_Vase_Mod (En_EAT_Util.S or ovl_En_EAT_Util.ovl) is basically anassembly rewrite of the custom actor within Unused_C (ovl_en_arow_trap_util.c) sinceI was having trouble with the mips-gcc compiler when using C. To use it, basically apply the PPF patch (it patches actor 0x0081 to 0x00D6CE00 andactor 0x0082 to 0x035CE040 in the ROM). If you're interested in only the actorfiles then look at ovl_En_Arow_Trap.ovl and ovl_En_EAT_Util.ovl. When you want to use the hack, just place actor 0x0082 and object 0x0086 on a map,walk over to where the actor is (if you haven't replaced the model then it is a pot)and then fire an arrow. The result is "Ouch!" Things for future releases: [*]Need to implement collision [*]Need to make a new model for actor 0x0082 (if there is demand) [*]Possibly decrease/increase/remove the proximity check in actor 0x0081 If you don't understand all the files that are included in this source, don't worry;it was mainly included for those that do. Here's a hint though: everything is mainlyfor use with mips-gcc, nOVL, nOVLIns, and zOVLDis. Devs, look at the Makefiles ifyou're curious on how to compile these things yourself. nOVL was made by ZZT32nOVLIns was made by spinoutzOVLDis was made by ZZT32 and spinoutI don't think I have to explain who all people made GCC If you're interested in making stuff like this, then follow these links for relatedstuff and tools: [*]https://bitbucket.org/mbr [*]https://bitbucket.org/ottehr [*]https://code.google.com/p/gzrt/wiki/Nintendo64ToolchainSetup Download: http://www.mediafire.com/download/57cyt6mu92zmg6t/ovl_en_arow_trap_util.7z EDIT: I realize now that it would've been ten times more efficient if I had just modified actor 0x0081 instead of modifying 0x0082 to spawn 0x0081.. Herp derp Next release (if there is one)! Edited June 26, 2013 by Jason777 2 Link to comment Share on other sites More sharing options...
Three_Pendants Posted June 26, 2013 Share Posted June 26, 2013 Hmm, now I'm curious, because it is the Arrow actor spawning the Attacking Arrow, is it possible to have the required actor to be Link? (Hence making it a real Arrow Trap and not an arrow... redirect... thing?) Link to comment Share on other sites More sharing options...
Jason777 Posted June 26, 2013 Author Share Posted June 26, 2013 You're asking if it's possible to just have Link spawn the attacking arrow? If so, then yes but the arrow will not fire at Link unless you screw with the positioning and rotation. Link to comment Share on other sites More sharing options...
Three_Pendants Posted June 26, 2013 Share Posted June 26, 2013 Oh, does the code work that it basically shoots the arrow back at Link by using the original coordinates of the arrow and reverses them to hit Link? Link to comment Share on other sites More sharing options...
Jason777 Posted June 26, 2013 Author Share Posted June 26, 2013 The way it works is that arrows are continually spawned from the custom actor's position by spawning en_arow_trap once (en_arow_trap constantly spawns arrows). In the custom actor's code, it also calls a function to have en_arow_trap constantly facing Link. The thing is, en_arow_trap does not shoot them; it relies on Link's code to deliver the final touches. In Link's code, I believe there is a place where it clears a flag that makes all arrows that are currently spawned fire. If I remove the proximity check then you can fire an arrow from anywhere in the map and you'll see that an arrow still fires from the pot's location and travels in your general direction. Trying this out in a large map will demonstrate this result quite clearly. Another thing is that it only has Y rotation that is constantly changing to have the actor face Link's general direction. This means that you could be a about 100 meters above the actor and fire an arrow to see that the attacking arrow will shoot and miss by going below Link (this is where some puzzle ideas come to mind). If you want, I can make another release where you can give the custom actor a certain variable to make it have a set rotation to shoot arrows normally and not constantly aim at Link. Link to comment Share on other sites More sharing options...
Three_Pendants Posted June 27, 2013 Share Posted June 27, 2013 Hmm, that does sound like a neat idea, mainly because I'm picturing this as possibly a way for enemies to shoot projectiles by calling a routine that would shoot an arrow in the direction they're facing, towards Link. 1 Link to comment Share on other sites More sharing options...
Jason777 Posted June 27, 2013 Author Share Posted June 27, 2013 Hmm, that does sound like a neat idea, mainly because I'm picturing this as possibly a way for enemies to shoot projectiles by calling a routine that would shoot an arrow in the direction they're facing, towards Link. That is definitely possible; I would just have to adapt code from this actor to work another one. The only thing is that it would require Link to fire an arrow first. Unless, of course, we find a way to shoot arrows (I've been looking for this for the past year and a half). Link to comment Share on other sites More sharing options...
Airikita Posted July 2, 2013 Share Posted July 2, 2013 The checks are not difficult to find at least... there's not too many to worry about. I believe the proximity check was something like BNEC1 or something... can't remember. I haven't been able to get Nemu64 to work to check, and it's not like it really matters as long as you find it. More to the point was getting the arrow to point at Link. Perhaps using the Beamos eye is a good start since the Beamos likely continuously spawns that laser beam it shoots. Link to comment Share on other sites More sharing options...
Recommended Posts