User Tag List

Page 3 of 6 FirstFirst 1 2 3 4 5 ... LastLast
Results 21 to 30 of 60

Thread: Zelda Classic 2.50.2

  1. #21
    Here lies mero. Died by his own dumbassitude.
    Join Date
    May 2011
    Posts
    929
    Mentioned
    102 Post(s)
    Tagged
    2 Thread(s)
    vBActivity - Stats
    Points
    5,527
    Level
    23
    vBActivity - Bars
    Lv. Percent
    13.96%
    Here's another hint...
    Use a shooter type but change the weapon to none.

  2. #22
    The Timelord
    QDB Manager
    ZC Developer

    Join Date
    Oct 2006
    Location
    Prydon Academy
    Posts
    1,396
    Mentioned
    112 Post(s)
    Tagged
    1 Thread(s)
    vBActivity - Stats
    Points
    4,760
    Level
    21
    vBActivity - Bars
    Lv. Percent
    68.7%
    Quote Originally Posted by Tamamo View Post
    Nope, first collision takes priority every other weapon will just die as usual on collision except for ones that persist such as explosions.
    That is what I would expect, and probably what is supposed to happen, but apparently not what Moosh experienced with simultaneous hits. I suspect that damage is calculated before the invincibility frames occur; and in some circumstances it can be applied from more than one source. In fact, I told him that the second collision shouldn't count, for just those reasons...but seemingly it can.


    Quote Originally Posted by CJC View Post
    ZoriaRPG, I believe the first collision triggers Link's "invulnerability" phase, so the second fireball strikes and does nothing because Link is temporarily invincible.
    EDIT: Since the projectiles on screen are indexed just like enemies, that would mean the first fireball created gets to do damage, then invulnerability is triggered and the second fireball does nothing. This is the same as hitting a bubble to evade an enemy attack--the 0 damage hit triggers invulnerability provided it has a lower index than the enemy attack (on a one frame double collision).
    @CJC : That's always going to be true, because the hits do not occur in the same frame.

    It's not that important, but at least I remembered to ask.
    @Moosh Get your arse over here, and detail that problem you had with simultaneous collisions with your 'Death' enemy.

  3. #23
    Quest Builder Anarchy_Balsac's Avatar
    Join Date
    Nov 2005
    Posts
    751
    Mentioned
    11 Post(s)
    Tagged
    2 Thread(s)
    vBActivity - Stats
    Points
    2,590
    Level
    16
    vBActivity - Bars
    Lv. Percent
    63.38%
    Quote Originally Posted by Tamamo View Post
    Here's another hint...
    Use a shooter type but change the weapon to none.
    Ah you know what, I don't know why I didn't think of that. Even so, there shouldn't be a need for me to go through all the trouble.

  4. #24
    Empty and become Moosh Moosh's Avatar
    Join Date
    Oct 2012
    Posts
    54
    Mentioned
    13 Post(s)
    Tagged
    4 Thread(s)
    vBActivity - Stats
    Points
    617
    Level
    8
    vBActivity - Bars
    Lv. Percent
    82.89%
    Quote Originally Posted by ZoriaRPG View Post
    @Moosh Get your arse over here, and detail that problem you had with simultaneous collisions with your 'Death' enemy.
    Okay, so it was a dark and stormy night...I was scripting a scythe swinging attack for a boss in Freedom in Chains. The attack had a slash animation made up of about 20 gradually shrinking circle draw commands. I wanted the whole thing to have collision, so I put weapons of approximately the same size under each circle and used ghost.zh to make them only last for one frame. I assumed it would only hit Link once per frame, but in testing it was an instant kill, way more than I'd set the weapons to deal. I figured ZC combines the damage of every weapon colliding with Link in the frame he gets hurt and so I switched to scripted collision instead. With only one weapon being created under Link when he collided with the attack, it worked fine.

  5. #25
    The Timelord
    QDB Manager
    ZC Developer

    Join Date
    Oct 2006
    Location
    Prydon Academy
    Posts
    1,396
    Mentioned
    112 Post(s)
    Tagged
    1 Thread(s)
    vBActivity - Stats
    Points
    4,760
    Level
    21
    vBActivity - Bars
    Lv. Percent
    68.7%
    Quote Originally Posted by Moosh View Post
    Okay, so it was a dark and stormy night...I was scripting a scythe swinging attack for a boss in Freedom in Chains. The attack had a slash animation made up of about 20 gradually shrinking circle draw commands. I wanted the whole thing to have collision, so I put weapons of approximately the same size under each circle and used ghost.zh to make them only last for one frame. I assumed it would only hit Link once per frame, but in testing it was an instant kill, way more than I'd set the weapons to deal. I figured ZC combines the damage of every weapon colliding with Link in the frame he gets hurt and so I switched to scripted collision instead. With only one weapon being created under Link when he collided with the attack, it worked fine.
    Clarify one thing please...

    Did you set up the dummy weapons to use a ->Power setting to apply damage, or did you use the custom circular collision, and directly modify Link's HP (e.g. Link->HP -= amount) ?

    The latter will always stack, per frame.

  6. #26
    Empty and become Moosh Moosh's Avatar
    Join Date
    Oct 2012
    Posts
    54
    Mentioned
    13 Post(s)
    Tagged
    4 Thread(s)
    vBActivity - Stats
    Points
    617
    Level
    8
    vBActivity - Bars
    Lv. Percent
    82.89%
    Quote Originally Posted by ZoriaRPG View Post
    Clarify one thing please...

    Did you set up the dummy weapons to use a ->Power setting to apply damage, or did you use the custom circular collision, and directly modify Link's HP (e.g. Link->HP -= amount) ?

    The latter will always stack, per frame.
    I used weapons. If I hadn't, it'd probably kill me from lack of invincibility frames.

  7. #27
    The Timelord
    QDB Manager
    ZC Developer

    Join Date
    Oct 2006
    Location
    Prydon Academy
    Posts
    1,396
    Mentioned
    112 Post(s)
    Tagged
    1 Thread(s)
    vBActivity - Stats
    Points
    4,760
    Level
    21
    vBActivity - Bars
    Lv. Percent
    68.7%
    Quote Originally Posted by Moosh View Post
    I used weapons. If I hadn't, it'd probably kill me from lack of invincibility frames.

    I'm checking, as I remember something about circular collision, and I never saw your code. Often, circular collision looks like this:

    Code:
    if ( CircularCollision(ew->x, ew->Y, radius1, Link->X, Link->Y, radius2) Link->HP -= val;
    ...but as you say you used ew->Power, my original point stands, as this may be something that needs examination.

  8. #28
    Empty and become Moosh Moosh's Avatar
    Join Date
    Oct 2012
    Posts
    54
    Mentioned
    13 Post(s)
    Tagged
    4 Thread(s)
    vBActivity - Stats
    Points
    617
    Level
    8
    vBActivity - Bars
    Lv. Percent
    82.89%
    Quote Originally Posted by ZoriaRPG View Post
    I'm checking, as I remember something about circular collision, and I never saw your code. Often, circular collision looks like this:

    Code:
    if ( CircularCollision(ew->x, ew->Y, radius1, Link->X, Link->Y, radius2) Link->HP -= val;
    ...but as you say you used ew->Power, my original point stands, as this may be something that needs examination.
    It's ew->Damage, isn't it? Itemclasses are the ones that use Power I thought. But anyways, yes, I did use a weapon with ew->Damage.

    Also, crossposting from the PureZC thread:
    Code:
    const int NPCM_SHOTCOOLDOWN = 0; //NPC->Misc used for fireball shooter cooldown
    
    const int FIREBALL_SHOOTER_COOLDOWN = 80; //Duration of fireball shooter cooldown in frames
    const int FIREBALL_SHOOTER_CHANCE = 64; //Chance of firing every frame
    
    void UnforgivingShooters(){
    	for(int i=1; i<=Screen->NumNPCs(); i++){ //Loops through every enemy, every frame. If you have an enemy loop in your global already, you'll want to combine them
    		npc n = Screen->LoadNPC(i); 
    		if(n->ID==NPC_SHOOTFBALL){ //Detect the fireball shooter
    			if(n->Misc[NPCM_SHOTCOOLDOWN]<=FIREBALL_SHOOTER_COOLDOWN){ //Increase the shot timer until the cooldown is over
    				n->Misc[NPCM_SHOTCOOLDOWN]++;
    			}
    			else if(Rand(FIREBALL_SHOOTER_CHANCE)==0){ //Once the cooldown has ended, has a random chance of firing a weapon every frame
    				Game->PlaySound(SFX_FIREBALL);
    				eweapon fball = CreateEWeaponAt(EW_FIREBALL, n->X, n->Y);
    				fball->Angular = true;
    				fball->Angle = DegtoRad(Angle(n->X, n->Y, Link->X, Link->Y));
    				fball->Dir = AngleDir4(Angle(n->X, n->Y, Link->X, Link->Y));
    				fball->Step = 150;
    				fball->UseSprite(17);
    				fball->Damage = n->WeaponDamage;
    				n->Misc[NPCM_SHOTCOOLDOWN] = 0;
    			}
    		}
    	}
    }
    I wrote a global script for the old shooter behavior in case anybody else is rustled by the change like Anarchy_Balsac was. Just set the Shooter (Fireball) enemy's weapon to none, put the function in your global script, and your shooters will once again have no mercy.
    Last edited by Tamamo; 10-27-2015 at 10:34 AM. Reason: Fireballs have a 1 in 64 chance of firing by default. Fixed.

  9. #29
    Here lies mero. Died by his own dumbassitude.
    Join Date
    May 2011
    Posts
    929
    Mentioned
    102 Post(s)
    Tagged
    2 Thread(s)
    vBActivity - Stats
    Points
    5,527
    Level
    23
    vBActivity - Bars
    Lv. Percent
    13.96%
    That is correct, power is from itemclasses and it's writable too but isn't saved.
    And good job @Moosh , I'll cross check it with the source for yeah.

    Last edited by Tamamo; 10-27-2015 at 10:28 AM.

  10. #30
    Here lies mero. Died by his own dumbassitude.
    Join Date
    May 2011
    Posts
    929
    Mentioned
    102 Post(s)
    Tagged
    2 Thread(s)
    vBActivity - Stats
    Points
    5,527
    Level
    23
    vBActivity - Bars
    Lv. Percent
    13.96%
    Quote Originally Posted by Tamamo View Post
    Actually I'm currently brain storming on doing something rather interesting about this, 2.50.x can use the quest rules that no longer exist however, there's a slight problem and it's a pain in the ass.

    Problem: Backwards Compatibility
    Solution: We use the deprecated constants from the enum when we run out of room however these have a purpose as they configure how the quest works until you load it ZQuest 2.50.x. That being said they pretty much become worthless at that point and we have access to them as they serve no purpose in builds after they are removed.
    @Gleeok
    Let's put my theory to the test shall we.

    Code:
    //Only new quest rules that make use of deprecated quest rule space should use this. -T
    int get_questrule(byte *bitstr,int bit,zquestheader *Header)
    {
    	if(Header.zelda_version < 0x253) //didn't exist yet, and these probably did. so we can't chance it.
    		return 0;
    	else
    	{
    		bitstr += bit>>3;
    		return ((*bitstr) >> (bit&7))&1;
    	}
    }
    Last edited by Tamamo; 01-18-2016 at 05:31 PM.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
About us
Armageddon Games is a game development group founded in 1997. We are extremely passionate about our work and our inspirations are mostly drawn from games of the 8-bit and 16-bit era.
Social