You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
4.8 KiB
115 lines
4.8 KiB
/// damage_player(damage, knockback_x, knockback_y, ignore_armor, ignore_invincibility)
|
|
if(global.spectator) exit;
|
|
var experimentalExtraSAXDamageMultiplier = 1;
|
|
if(global.experimental) experimentalExtraSAXDamageMultiplier = 1.25;
|
|
var damage_taken = 0;
|
|
if (global.currentsuit == 0 || argument3 == 1){
|
|
if(!global.multiDamageCollision){
|
|
damage_taken = argument0 * oControl.mod_diffmult;
|
|
} else {
|
|
damage_taken = argument0 * experimentalExtraSAXDamageMultiplier * oControl.mod_diffmult; //PvP Damage
|
|
damage_taken = damage_taken + (damage_taken * global.damageMult); //PvP Damage
|
|
}
|
|
}
|
|
if (argument3 == 0) {
|
|
if (global.currentsuit == 1){
|
|
if(!global.multiDamageCollision){
|
|
damage_taken = ceil(argument0 * 0.5) * oControl.mod_diffmult;
|
|
} else {
|
|
damage_taken = ceil(argument0 * 0.75) * experimentalExtraSAXDamageMultiplier * oControl.mod_diffmult; //PvP Damage
|
|
damage_taken = damage_taken + (damage_taken * global.damageMult); //PvP Damage
|
|
}
|
|
|
|
}
|
|
if (global.currentsuit == 2) {
|
|
if(!global.multiDamageCollision){
|
|
if(global.item[5] == 0){
|
|
damage_taken = ceil(argument0 * 0.5) * oControl.mod_diffmult;
|
|
} else {
|
|
damage_taken = ceil(argument0 * 0.25) * oControl.mod_diffmult;
|
|
}
|
|
} else {
|
|
if(global.item[5] == 0){
|
|
damage_taken = ceil(argument0 * 0.75) * experimentalExtraSAXDamageMultiplier * oControl.mod_diffmult; //PvP Damage
|
|
damage_taken = damage_taken + (damage_taken * global.damageMult); //PvP Damage
|
|
} else {
|
|
damage_taken = ceil(argument0 * 0.6) * experimentalExtraSAXDamageMultiplier * oControl.mod_diffmult; //PvP Damage
|
|
damage_taken = damage_taken + (damage_taken * global.damageMult); //PvP Damage
|
|
}
|
|
}
|
|
} //added
|
|
}
|
|
|
|
if (global.playerhealth > 0) with (oCharacter) {
|
|
var currState = state;
|
|
if ((state != HURT && invincible == 0 || argument4 == 1 && statetime > 2) && !global.ignoreKnockback) {
|
|
if (canbehit && state != IDLE && state != SAVING && state != SAVINGFX && state != SAVINGSHIPFX && state != SAVINGSHIP && state != ELEVATOR && state != GFELEVATOR) {
|
|
if (state == BALL || state == AIRBALL || state == SPIDERBALL || sjball == 1) {
|
|
//if(!instance_exists(oClient)) sjball = 1;
|
|
multiBall = 1;
|
|
fixedx = 12;
|
|
sball = 0;
|
|
} else sjball = 0;
|
|
if(global.multiDamageCollision){
|
|
if(otherOBJ != oBeam){
|
|
state = HURT;
|
|
} else fixedx = 0;
|
|
} else state = HURT;
|
|
statetime = 0;
|
|
canturn = 0;
|
|
image_index = 0;
|
|
if (other.x >= x) xVel = -argument1;
|
|
if (other.x < x) xVel = argument1;
|
|
yVel = argument2;
|
|
sfx_play(sndHurt);
|
|
ctrl_vibrate(0.5, 0.5, 10);
|
|
invincible = 60;
|
|
if(global.playerFreeze > 0){
|
|
invincible = 45;
|
|
if(state == BALL || state == AIRBALL || state == SPIDERBALL) fixedx = 0;
|
|
}
|
|
if(global.playerFreeze == 156){
|
|
state = currState;
|
|
invincible = 0;
|
|
if(state == BALL || state == AIRBALL || state == SPIDERBALL) fixedx = 0;
|
|
}
|
|
if (inwater) {
|
|
repeat (3 + floor(random(3))) {
|
|
bubble = instance_create(x, y - 6 - random(20), oLBubble);
|
|
if (instance_exists(bubble)) {
|
|
bubble.hspeed = 1 - random(2);
|
|
bubble.vspeed = -0.1 - random(1);
|
|
}
|
|
}
|
|
}
|
|
global.playerhealth -= damage_taken;
|
|
} // if (canbehit)
|
|
} // if (state != HURT && invincible == 0 || argument4 == 1 && statetime > 2)
|
|
if (global.playerhealth <= 0 && state != DEFEATED) {
|
|
alarm[0] = 6;
|
|
state = DEFEATED;
|
|
}
|
|
} // if (global.playerhealth > 0)
|
|
|
|
with(oCharacter){
|
|
if(global.ignoreKnockback && invincible == 0){
|
|
invincible = 60;
|
|
if(global.playerFreeze > 0){
|
|
invincible = 45;
|
|
if(state == BALL || state == AIRBALL || state == SPIDERBALL) fixedx = 0;
|
|
}
|
|
if(global.playerFreeze == 156){
|
|
invincible = 0;
|
|
if(state == BALL || state == AIRBALL || state == SPIDERBALL) fixedx = 0;
|
|
}
|
|
global.playerhealth -= damage_taken;
|
|
if (global.playerhealth <= 0 && state != DEFEATED) {
|
|
alarm[0] = 6;
|
|
state = DEFEATED;
|
|
}
|
|
}
|
|
}
|
|
|
|
global.multiDamageCollision = false;
|
|
global.ignoreKnockback = false;
|