Downloads containing ArcaneWeapon8.asc

Downloads
Name Author Game Mode Rating
TSF with JJ2+ Only: Anniversary Bash 23 levels Jazz2Online Multiple N/A Download file
TSF with JJ2+ Only: Salem Loon Battle N/A Download file
Custom Weapons...Featured Download Violet CLM Other 10 Download file

File preview

  1. #pragma require "ArcaneWeapon8.asc"
  2. #include "MLLE-Weapons.asc"
  3. #pragma require "Syringe.j2a"
  4.  
  5. namespace ArcaneWeapons {
  6.         namespace SanguineSpear {
  7.                 class Weapon : MLLEWeapons::WeaponInterface {
  8.                         Weapon() {
  9.                                 super(
  10.                                         regularObjectTemplate: MLLEWeapons::ObjectTemplate(
  11.                                                 xSpeed: 8,
  12.                                                 xAcc: 0.025,
  13.                                                 ySpeed: -1.5,
  14.                                                 yAcc: 0.1,
  15.                                                 animSpeed: 1,
  16.                                                 curAnim: jjObjects[0].determineCurAnim(ANIM::HATTER, 3, false),
  17.                                                 killAnim: jjObjects[0].determineCurAnim(ANIM::MONKEY, 1, false),
  18.                                                 lightType: LIGHT::POINT2,
  19.                                                 counterEnd: 85,
  20.                                                 doesHurt: 24
  21.                                         ),
  22.                                         powerupObjectTemplate: MLLEWeapons::ObjectTemplate(
  23.                                                 xSpeed: 8.5,
  24.                                                 xAcc: 0.025,
  25.                                                 ySpeed: -2,
  26.                                                 yAcc: 0.1,
  27.                                                 animSpeed: 2,
  28.                                                 curAnim: jjObjects[0].determineCurAnim(ANIM::HATTER, 3, false),
  29.                                                 killAnim: jjObjects[0].determineCurAnim(ANIM::MONKEY, 1, false),
  30.                                                 lightType: LIGHT::POINT,
  31.                                                 counterEnd: 95,
  32.                                                 doesHurt: 16
  33.                                         ),
  34.                                         animSetFilename: "Syringe.j2a",
  35.                                         pickupAnimation: 0,
  36.                                         poweredUpPickupAnimation: 1,
  37.                                         ammoCrateAnimation: 3,
  38.                                         powerupAnimation: 2,
  39.                                         replacedByBubbles: true,
  40.                                         onPlayerInput: determineSpread,
  41.                                         behavior: function(obj, powerup) {
  42.                                                 if (obj.creatorType == CREATOR::PLAYER && jjPlayers[obj.creatorID].isLocal)
  43.                                                         jjSample(obj.xPos, obj.yPos, SOUND::HATTER_PTOEI, 0, powerup? 19000:20000);
  44.                                                 if (obj.eventID == OBJECT::ICEBULLET)
  45.                                                         obj.eventID = OBJECT::BLASTERBULLET;
  46.                                                 if (abs(obj.ySpeed) > abs(obj.xSpeed))
  47.                                                         obj.yAcc += 0.15;
  48.                                                 obj.behavior = Behavior;
  49.                                         }
  50.                                 );
  51.                         }
  52.                 }
  53.                
  54.                 void Behavior(jjOBJ@ obj) {
  55.                         obj.behave(BEHAVIOR::BULLET, false);
  56.                         const bool powerup = MLLEWeapons::HelpfulBulletFunctions::IsPowerup(obj);
  57.                        
  58.                         if (obj.state == STATE::FLY) {
  59.                                 jjDrawRotatedSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame, MLLEWeapons::HelpfulBulletFunctions::GetAngle(obj), MLLEWeapons::HelpfulBulletFunctions::GetDirection(obj) * 2, 1, SPRITE::SINGLEHUE, obj.doesHurt);
  60.                                
  61.                                 jjPARTICLE@ blood = jjAddParticle(PARTICLE::ICETRAIL);
  62.                                 if (blood !is null) {
  63.                                         blood.xPos = obj.xPos;
  64.                                         blood.yPos = obj.yPos;
  65.                                         blood.icetrail.color = obj.doesHurt;
  66.                                         blood.icetrail.colorStop = obj.doesHurt+8;
  67.                                 }
  68.                         }
  69.                        
  70.                         if (obj.state == STATE::EXPLODE) {
  71.                                 jjDrawSpriteFromCurFrame(obj.xPos, obj.yPos, obj.curFrame, obj.direction, SPRITE::SINGLEHUE, obj.doesHurt);
  72.                                 if (obj.age < 27) {
  73.                                         if (obj.age == 1) jjSample(obj.xPos, obj.yPos, SOUND::HATTER_SPLOUT, 0, 20000);
  74.                                         obj.age = obj.age + 1;
  75.                                 }
  76.                                 if (obj.age == 27) {
  77.                                         obj.age = 0;
  78.                                         obj.delete();
  79.                                 }
  80.                         }
  81.                 }
  82.                
  83.                 void determineSpread(jjPLAYER@ play, int number) {
  84.                         const float MaxHealth = jjMaxHealth + 1;
  85.                         const float Health = play.health + 1;
  86.                         const float healthratio = MaxHealth / Health;
  87.  
  88.                         if (healthratio < 1.3) jjWeapons[number].spread = SPREAD::NORMAL;
  89.                         else if (healthratio >= 1.3 && healthratio < 2) jjWeapons[number].spread = SPREAD::RFNORMAL;
  90.                         else if (healthratio >= 2) jjWeapons[number].spread = SPREAD::RFPU;
  91.                 }
  92.         }
  93. }