equal
deleted
inserted
replaced
4321 begin |
4321 begin |
4322 iterator^.Elasticity:= iterator^.X; |
4322 iterator^.Elasticity:= iterator^.X; |
4323 iterator^.Friction := iterator^.Y; |
4323 iterator^.Friction := iterator^.Y; |
4324 end; |
4324 end; |
4325 |
4325 |
4326 // This jiggles gears, to ensure a portal connection just placed under a gear takes effect. |
|
4327 iterator:= GearsList; |
|
4328 while iterator <> nil do |
|
4329 begin |
|
4330 if (iterator^.Kind <> gtPortal) and ((iterator^.Hedgehog <> CurrentHedgehog) |
|
4331 or ((iterator^.Message and gmAllStoppable) = 0)) then |
|
4332 begin |
|
4333 iterator^.Active:= true; |
|
4334 if iterator^.dY.QWordValue = _0.QWordValue then |
|
4335 iterator^.dY.isNegative:= false; |
|
4336 iterator^.State:= iterator^.State or gstMoving; |
|
4337 DeleteCI(iterator); |
|
4338 //inc(iterator^.dY.QWordValue,10); |
|
4339 end; |
|
4340 iterator:= iterator^.NextGear |
|
4341 end; |
|
4342 |
|
4343 if Gear^.Health > 1 then |
4326 if Gear^.Health > 1 then |
4344 dec(Gear^.Health); |
4327 dec(Gear^.Health); |
4345 end; |
4328 end; |
4346 end; |
4329 end; |
4347 |
4330 |
4466 if (CurWeapon <> nil) and (CurAmmoType = amPortalGun) then |
4449 if (CurWeapon <> nil) and (CurAmmoType = amPortalGun) then |
4467 CurWeapon^.Timer := CurWeapon^.Timer or 2; |
4450 CurWeapon^.Timer := CurWeapon^.Timer or 2; |
4468 |
4451 |
4469 iterator := GearsList; |
4452 iterator := GearsList; |
4470 while iterator <> nil do |
4453 while iterator <> nil do |
4471 begin |
4454 begin |
4472 if (iterator^.Kind = gtPortal) then |
4455 if (iterator^.Kind = gtPortal) then |
4473 if (iterator <> newPortal) and (iterator^.Timer > 0) and (iterator^.Hedgehog = CurrentHedgehog) then |
4456 if (iterator <> newPortal) and (iterator^.Timer > 0) and (iterator^.Hedgehog = CurrentHedgehog) then |
4474 begin |
4457 begin |
4475 if ((iterator^.Tag and 2) = (newPortal^.Tag and 2)) then |
4458 if ((iterator^.Tag and 2) = (newPortal^.Tag and 2)) then |
4476 begin |
4459 begin |
4484 iterator^.Health := newPortal^.Health; |
4467 iterator^.Health := newPortal^.Health; |
4485 end; |
4468 end; |
4486 end; |
4469 end; |
4487 iterator^.PortalCounter:= 0; |
4470 iterator^.PortalCounter:= 0; |
4488 iterator := iterator^.NextGear |
4471 iterator := iterator^.NextGear |
4489 end; |
4472 end; |
|
4473 |
|
4474 if newPortal^.LinkedGear <> nil then |
|
4475 begin |
|
4476 // This jiggles gears, to ensure a portal connection just placed under a gear takes effect. |
|
4477 iterator:= GearsList; |
|
4478 while iterator <> nil do |
|
4479 begin |
|
4480 if not (iterator^.Kind in [gtPortal, gtAirAttack]) and ((iterator^.Hedgehog <> CurrentHedgehog) |
|
4481 or ((iterator^.Message and gmAllStoppable) = 0)) then |
|
4482 begin |
|
4483 iterator^.Active:= true; |
|
4484 if iterator^.dY.QWordValue = _0.QWordValue then |
|
4485 iterator^.dY.isNegative:= false; |
|
4486 iterator^.State:= iterator^.State or gstMoving; |
|
4487 DeleteCI(iterator); |
|
4488 //inc(iterator^.dY.QWordValue,10); |
|
4489 end; |
|
4490 iterator:= iterator^.NextGear |
|
4491 end |
|
4492 end |
4490 end; |
4493 end; |
4491 newPortal^.State := newPortal^.State and (not gstCollision); |
4494 newPortal^.State := newPortal^.State and (not gstCollision); |
4492 newPortal^.State := newPortal^.State or gstMoving; |
4495 newPortal^.State := newPortal^.State or gstMoving; |
4493 newPortal^.doStep := @doStepMovingPortal; |
4496 newPortal^.doStep := @doStepMovingPortal; |
4494 end; |
4497 end; |