User Tag List

Results 1 to 10 of 60

Thread: Zelda Classic 2.50.2

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    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,765
    Level
    21
    vBActivity - Bars
    Lv. Percent
    69.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.

  2. #2
    Empty and become Moosh Moosh's Avatar
    Join Date
    Oct 2012
    Posts
    57
    Mentioned
    13 Post(s)
    Tagged
    4 Thread(s)
    vBActivity - Stats
    Points
    628
    Level
    8
    vBActivity - Bars
    Lv. Percent
    90.27%
    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.

  3. #3
    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,765
    Level
    21
    vBActivity - Bars
    Lv. Percent
    69.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.

  4. #4
    Empty and become Moosh Moosh's Avatar
    Join Date
    Oct 2012
    Posts
    57
    Mentioned
    13 Post(s)
    Tagged
    4 Thread(s)
    vBActivity - Stats
    Points
    628
    Level
    8
    vBActivity - Bars
    Lv. Percent
    90.27%
    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.

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