X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fg_damage.qc;h=45319ca0748e6f19a6ae95722967249421ea724f;hb=c002730fc4e73762fa77120b026a5bba2bd47ea3;hp=4b7c297314c84531ed240eaea1609b9346c3d990;hpb=b56d8435ab6710d101761c6c2b9746e38e3cc813;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index 4b7c29731..45319ca07 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -311,11 +311,11 @@ float Obituary_WeaponDeath( } else { - dprint(sprintf( + dprintf( "Obituary_WeaponDeath(): ^1Deathtype ^7(%d)^1 has no notification for weapon %d!\n", deathtype, death_weapon - )); + ); } return TRUE; @@ -549,77 +549,6 @@ void Obituary(entity attacker, entity inflictor, entity targ, float deathtype) if(targ.killcount) { targ.killcount = 0; } } -void Ice_Think() -{ - setorigin(self, self.owner.origin - '0 0 16'); - self.nextthink = time; -} - -void Freeze (entity targ, float freeze_time, float frozen_type, float show_waypoint) -{ - if(!IS_PLAYER(targ) && !(targ.flags & FL_MONSTER)) // only specified entities can be freezed - return; - - if(targ.frozen) - return; - - targ.frozen = frozen_type; - targ.revive_progress = 0; - targ.health = 1; - targ.revive_speed = freeze_time; - - entity ice, head; - ice = spawn(); - ice.owner = targ; - ice.classname = "ice"; - ice.scale = targ.scale; - ice.think = Ice_Think; - ice.nextthink = time; - ice.frame = floor(random() * 21); // ice model has 20 different looking frames - setmodel(ice, "models/ice/ice.md3"); - ice.alpha = 1; - ice.colormod = Team_ColorRGB(targ.team); - ice.glowmod = ice.colormod; - targ.iceblock = ice; - - entity oldself; - oldself = self; - self = ice; - Ice_Think(); - self = oldself; - - RemoveGrapplingHook(targ); - - FOR_EACH_PLAYER(head) - if(head.hook.aiment == targ) - RemoveGrapplingHook(head); - - // add waypoint - if(show_waypoint) - WaypointSprite_Spawn("frozen", 0, 0, targ, '0 0 64', world, targ.team, targ, waypointsprite_attached, TRUE, RADARICON_WAYPOINT, '0.25 0.90 1'); -} - -void Unfreeze (entity targ) -{ - if(targ.frozen) // only reset health if target was frozen - targ.health = ((IS_PLAYER(targ)) ? autocvar_g_balance_health_start : targ.max_health); - - entity head; - targ.frozen = 0; - targ.revive_progress = 0; - - WaypointSprite_Kill(targ.waypointsprite_attached); - - FOR_EACH_PLAYER(head) - if(head.hook.aiment == targ) - RemoveGrapplingHook(head); - - // remove the ice block - if(targ.iceblock) - remove(targ.iceblock); - targ.iceblock = world; -} - // these are updated by each Damage call for use in button triggering and such entity damage_targ; entity damage_inflictor; @@ -749,12 +678,6 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float mirrorforce *= g_weaponforcefactor; } - if(targ.frozen && deathtype != DEATH_HURTTRIGGER) - { - damage = 0; - force *= 0.2; - } - // should this be changed at all? If so, in what way? frag_attacker = attacker; frag_target = targ; @@ -1001,12 +924,12 @@ float RadiusDamage (entity inflictor, entity attacker, float coredamage, float e mininv_f = (vlen(force) * (1-tfloorforce)) / autocvar_g_throughfloor_force_max_stddev; if(autocvar_g_throughfloor_debug) - print(sprintf("THROUGHFLOOR: D=%f F=%f max(dD)=1/%f max(dF)=1/%f", finaldmg, vlen(force), mininv_d, mininv_f)); + printf("THROUGHFLOOR: D=%f F=%f max(dD)=1/%f max(dF)=1/%f", finaldmg, vlen(force), mininv_d, mininv_f); total = 0.25 * pow(max(mininv_f, mininv_d), 2); if(autocvar_g_throughfloor_debug) - print(sprintf(" steps=%f", total)); + printf(" steps=%f", total); if (IS_PLAYER(targ)) total = ceil(bound(autocvar_g_throughfloor_min_steps_player, total, autocvar_g_throughfloor_max_steps_player)); @@ -1014,7 +937,7 @@ float RadiusDamage (entity inflictor, entity attacker, float coredamage, float e total = ceil(bound(autocvar_g_throughfloor_min_steps_other, total, autocvar_g_throughfloor_max_steps_other)); if(autocvar_g_throughfloor_debug) - print(sprintf(" steps=%f dD=%f dF=%f", total, finaldmg * (1-tfloordmg) / (2 * sqrt(total)), vlen(force) * (1-tfloorforce) / (2 * sqrt(total)))); + printf(" steps=%f dD=%f dF=%f", total, finaldmg * (1-tfloordmg) / (2 * sqrt(total)), vlen(force) * (1-tfloorforce) / (2 * sqrt(total))); for(c = 0; c < total; ++c) { @@ -1041,7 +964,7 @@ float RadiusDamage (entity inflictor, entity attacker, float coredamage, float e force = force * a; if(autocvar_g_throughfloor_debug) - print(sprintf(" D=%f F=%f\n", finaldmg, vlen(force))); + printf(" D=%f F=%f\n", finaldmg, vlen(force)); } // laser force adjustments :P @@ -1277,7 +1200,7 @@ void Fire_ApplyDamage(entity e) e.fire_endtime = 0; // ice stops fire - if(e.frozen) + if(e.freezetag_frozen) e.fire_endtime = 0; t = min(frametime, e.fire_endtime - time);