X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Ftriggers%2Ftrigger%2Fswamp.qc;h=71c5247c7446c5332d12e62b7f9084e105e47bd9;hp=b9a4acd1a411934b3a90500afdff44dbeafd77c5;hb=65e9ceb03c81bc515d090a54f65dd620c8c6dc43;hpb=18302817d7f0cb0ba74398200da5e400ffc1b9a4 diff --git a/qcsrc/common/triggers/trigger/swamp.qc b/qcsrc/common/triggers/trigger/swamp.qc index b9a4acd1a..71c5247c7 100644 --- a/qcsrc/common/triggers/trigger/swamp.qc +++ b/qcsrc/common/triggers/trigger/swamp.qc @@ -1,11 +1,11 @@ +#include "swamp.qh" #if defined(CSQC) #elif defined(MENUQC) #elif defined(SVQC) - #include "../../../server/_all.qh" - #include "../../../warpzonelib/util_server.qh" - #include "../../weapons/all.qh" - #include "../../../server/defs.qh" - #include "../../deathtypes.qh" + #include + #include + #include + #include #endif /* @@ -21,10 +21,10 @@ .entity swampslug; #ifdef SVQC -void spawnfunc_trigger_swamp(void); +spawnfunc(trigger_swamp); #endif -void swamp_touch(void); -void swampslug_think(); +void swamp_touch(entity this, entity toucher); +void swampslug_think(entity this); /* @@ -37,17 +37,17 @@ void swampslug_think(); * * I do it this way becuz there is no "untouch" event. */ -void swampslug_think(void) -{SELFPARAM(); +void swampslug_think(entity this) +{ //Slowly kill the slug - self.health = self.health - 1; + this.health = this.health - 1; //Slug dead? then remove curses. - if(self.health <= 0) + if(this.health <= 0) { - self.owner.in_swamp = 0; - remove(self); - //centerprint(self.owner,"Killing slug...\n"); + this.owner.in_swamp = 0; + delete(this); + //centerprint(this.owner,"Killing slug...\n"); return; } @@ -55,100 +55,103 @@ void swampslug_think(void) // Or we have exited it very recently. // Do the damage and renew the timer. #ifdef SVQC - Damage (self.owner, self, self, self.dmg, DEATH_SWAMP, other.origin, '0 0 0'); + Damage (this.owner, this, this, this.dmg, DEATH_SWAMP.m_id, this.owner.origin, '0 0 0'); #endif - self.nextthink = time + self.swamp_interval; + this.nextthink = time + this.swamp_interval; } -void swamp_touch(void) -{SELFPARAM(); +void swamp_touch(entity this, entity toucher) +{ // If whatever thats touching the swamp is not a player // or if its a dead player, just dont care abt it. - if(!IS_PLAYER(other) || PHYS_DEAD(other)) + if(!IS_PLAYER(toucher) || IS_DEAD(toucher)) return; - EXACTTRIGGER_TOUCH; + EXACTTRIGGER_TOUCH(this, toucher); // Chech if player alredy got a swampslug. - if(other.in_swamp != 1) + if(toucher.in_swamp != 1) { // If not attach one. - //centerprint(other,"Entering swamp!\n"); - other.swampslug = spawn(); - other.swampslug.health = 2; - other.swampslug.think = swampslug_think; - other.swampslug.nextthink = time; - other.swampslug.owner = other; - other.swampslug.dmg = self.dmg; - other.swampslug.swamp_interval = self.swamp_interval; - other.swamp_slowdown = self.swamp_slowdown; - other.in_swamp = 1; + //centerprint(toucher,"Entering swamp!\n"); + toucher.swampslug = spawn(); + toucher.swampslug.health = 2; + setthink(toucher.swampslug, swampslug_think); + toucher.swampslug.nextthink = time; + toucher.swampslug.owner = toucher; + toucher.swampslug.dmg = this.dmg; + toucher.swampslug.swamp_interval = this.swamp_interval; + toucher.swamp_slowdown = this.swamp_slowdown; + toucher.in_swamp = 1; return; } - //other.in_swamp = 1; + //toucher.in_swamp = 1; //Revitalize players swampslug - other.swampslug.health = 2; + toucher.swampslug.health = 2; } +REGISTER_NET_LINKED(ENT_CLIENT_SWAMP) + #ifdef SVQC -float swamp_send(entity to, float sf) -{SELFPARAM(); - WriteByte(MSG_ENTITY, ENT_CLIENT_LADDER); +float swamp_send(entity this, entity to, float sf) +{ + WriteHeader(MSG_ENTITY, ENT_CLIENT_SWAMP); - WriteByte(MSG_ENTITY, self.dmg); // can probably get away with using a single byte here - WriteByte(MSG_ENTITY, self.swamp_slowdown); - WriteByte(MSG_ENTITY, self.swamp_interval); + WriteByte(MSG_ENTITY, this.dmg); // can probably get away with using a single byte here + WriteByte(MSG_ENTITY, this.swamp_slowdown); + WriteByte(MSG_ENTITY, this.swamp_interval); - trigger_common_write(false); + trigger_common_write(this, false); return true; } -void swamp_link() -{SELFPARAM(); - Net_LinkEntity(self, false, 0, func_ladder_send); +void swamp_link(entity this) +{ + trigger_link(this, swamp_send); } /*QUAKED spawnfunc_trigger_swamp (.5 .5 .5) ? Players gettin into the swamp will get slowd down and damaged */ -void spawnfunc_trigger_swamp(void) -{SELFPARAM(); +spawnfunc(trigger_swamp) +{ // Init stuff - EXACTTRIGGER_INIT; - self.touch = swamp_touch; + trigger_init(this); + settouch(this, swamp_touch); // Setup default keys, if missing - if(self.dmg <= 0) - self.dmg = 5; - if(self.swamp_interval <= 0) - self.swamp_interval = 1; - if(self.swamp_slowdown <= 0) - self.swamp_slowdown = 0.5; - - swamp_link(); + if(this.dmg <= 0) + this.dmg = 5; + if(this.swamp_interval <= 0) + this.swamp_interval = 1; + if(this.swamp_slowdown <= 0) + this.swamp_slowdown = 0.5; + + swamp_link(this); } #elif defined(CSQC) -void ent_swamp() -{SELFPARAM(); - self.dmg = ReadByte(); - self.swamp_slowdown = ReadByte(); - self.swamp_interval = ReadByte(); - - trigger_common_read(false); - - self.classname = "trigger_swamp"; - self.solid = SOLID_TRIGGER; - self.draw = trigger_draw_generic; - self.trigger_touch = swamp_touch; - self.drawmask = MASK_NORMAL; - self.move_time = time; - self.entremove = trigger_remove_generic; +NET_HANDLE(ENT_CLIENT_SWAMP, bool isnew) +{ + this.dmg = ReadByte(); + this.swamp_slowdown = ReadByte(); + this.swamp_interval = ReadByte(); + + trigger_common_read(this, false); + + return = true; + + this.classname = "trigger_swamp"; + this.solid = SOLID_TRIGGER; + settouch(this, swamp_touch); + this.drawmask = MASK_NORMAL; + this.move_time = time; + this.entremove = trigger_remove_generic; } #endif