equal
deleted
inserted
replaced
103 (* gtTardis *) , amTardis |
103 (* gtTardis *) , amTardis |
104 (* gtIceGun *) , amIceGun |
104 (* gtIceGun *) , amIceGun |
105 (* gtAddAmmo *) , amNothing |
105 (* gtAddAmmo *) , amNothing |
106 (* gtGenericFaller *) , amNothing |
106 (* gtGenericFaller *) , amNothing |
107 (* gtKnife *) , amKnife |
107 (* gtKnife *) , amKnife |
|
108 (* gtDuck *) , amDuck |
108 ); |
109 ); |
109 |
110 |
110 |
111 |
111 var GCounter: LongWord = 0; // this does not get re-initialized, but should be harmless |
112 var GCounter: LongWord = 0; // this does not get re-initialized, but should be harmless |
112 |
113 |
261 gtHammer: if cDamageModifier > _1 then // scale it based on cDamageModifier? |
262 gtHammer: if cDamageModifier > _1 then // scale it based on cDamageModifier? |
262 Gear^.Boom := 2 |
263 Gear^.Boom := 2 |
263 else Gear^.Boom := 3; |
264 else Gear^.Boom := 3; |
264 gtPoisonCloud: Gear^.Boom := 20; |
265 gtPoisonCloud: Gear^.Boom := 20; |
265 gtKnife: Gear^.Boom := 40000; // arbitrary scaling factor since impact-based |
266 gtKnife: Gear^.Boom := 40000; // arbitrary scaling factor since impact-based |
|
267 gtDuck: Gear^.Boom := 40; |
266 end; |
268 end; |
267 |
269 |
268 case Kind of |
270 case Kind of |
269 gtGrenade, |
271 gtGrenade, |
270 gtClusterBomb, |
272 gtClusterBomb, |
505 gear^.Friction:= _0_8; |
507 gear^.Friction:= _0_8; |
506 gear^.Radius:= 2; |
508 gear^.Radius:= 2; |
507 gear^.Density:= _1_5; |
509 gear^.Density:= _1_5; |
508 gear^.RenderTimer:= true |
510 gear^.RenderTimer:= true |
509 end; |
511 end; |
510 gtShover: gear^.Radius:= 20; |
512 gtShover: begin |
|
513 gear^.Radius:= 20; |
|
514 gear^.Tag:= 0; |
|
515 gear^.Timer:= 50; |
|
516 end; |
511 gtFlame: begin |
517 gtFlame: begin |
512 gear^.Tag:= GetRandom(32); |
518 gear^.Tag:= GetRandom(32); |
513 gear^.Radius:= 1; |
519 gear^.Radius:= 1; |
514 gear^.Health:= 5; |
520 gear^.Health:= 5; |
515 gear^.Density:= _1; |
521 gear^.Density:= _1; |
572 gear^.Health:= 2048; |
578 gear^.Health:= 2048; |
573 gear^.Radius:= 7; |
579 gear^.Radius:= 7; |
574 gear^.Z:= cOnHHZ; |
580 gear^.Z:= cOnHHZ; |
575 gear^.RenderTimer:= false; |
581 gear^.RenderTimer:= false; |
576 gear^.DirAngle:= -90 * hwSign(Gear^.dX); |
582 gear^.DirAngle:= -90 * hwSign(Gear^.dX); |
|
583 gear^.FlightTime:= 100; // (roughly) ticks spent dropping, used to skip getting up anim when stuck. |
|
584 // Initially set to a high value so cake has at least one getting up anim. |
577 if not dX.isNegative then |
585 if not dX.isNegative then |
578 gear^.Angle:= 1 |
586 gear^.Angle:= 1 |
579 else |
587 else |
580 gear^.Angle:= 3; |
588 gear^.Angle:= 3; |
581 New(cakeData); |
589 New(cakeData); |
629 gear^.State:= Gear^.State or gstSubmersible |
637 gear^.State:= Gear^.State or gstSubmersible |
630 end; |
638 end; |
631 gtMolotov: begin |
639 gtMolotov: begin |
632 gear^.AdvBounce:= 1; |
640 gear^.AdvBounce:= 1; |
633 gear^.Radius:= 6; |
641 gear^.Radius:= 6; |
|
642 gear^.Elasticity:= _0_8; |
|
643 gear^.Friction:= _0_8; |
634 gear^.Density:= _2 |
644 gear^.Density:= _2 |
635 end; |
645 end; |
636 gtBirdy: begin |
646 gtBirdy: begin |
637 gear^.Radius:= 16; // todo: check |
647 gear^.Radius:= 16; // todo: check |
638 gear^.Health := 2000; |
648 gear^.Health := 2000; |
710 end; |
720 end; |
711 } |
721 } |
712 gtIceGun: begin |
722 gtIceGun: begin |
713 gear^.Health:= 1000; |
723 gear^.Health:= 1000; |
714 gear^.Radius:= 8; |
724 gear^.Radius:= 8; |
|
725 end; |
|
726 gtDuck: begin |
|
727 gear^.Pos:= 0; // 0: in air, 1-4: on water, 5-8: underwater |
|
728 // 1: bottom, 2: bottom (mirrored), |
|
729 // 3: left Sea edge, 4: right Sea edge |
|
730 // 6: bottom, 7: bottom (mirrored) |
|
731 // 7: left Sea edge, 8: right Sea edge |
|
732 gear^.Tag:= 1; // 1: facing right, -1: facing left |
|
733 if gear^.Timer = 0 then |
|
734 gear^.Timer:= 15000; // Explosion timer to avoid duck existing forever |
|
735 gear^.Radius:= 9; // Collision radius (with landscape) |
|
736 gear^.Karma:= 24; // Distance from water when swimming |
|
737 gear^.Damage:= 500; // Speed factor when swimming on water (multiplied with wind speed) |
|
738 gear^.State:= gear^.State or gstSubmersible; |
|
739 gear^.Elasticity:= _0_6; |
|
740 gear^.Friction:= _0_8; |
|
741 gear^.Density:= _0_5; |
|
742 gear^.AdvBounce:= 1; |
715 end; |
743 end; |
716 gtGenericFaller:begin |
744 gtGenericFaller:begin |
717 gear^.AdvBounce:= 1; |
745 gear^.AdvBounce:= 1; |
718 gear^.Radius:= 1; |
746 gear^.Radius:= 1; |
719 gear^.Elasticity:= _0_9; |
747 gear^.Elasticity:= _0_9; |