summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/System.c4g/Plague.c
blob: e70560fcc4fb6ac52386427d53f51c57ebe1365f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*-- Plague --*/

#strict

#appendto MGPL

protected func Slay() {
	var pClonk;
	while(pClonk=FindObject(0,-iRand/6,-iRand/6,iRand/3,iRand/3,OCF_Alive(),0,0,0, pClonk))
		if(GetActionTarget() != pClonk)
			AddEffect("Poison",pClonk,182,5,0,GetID(), fSnake, GetActionTarget());
		RemoveObject();
}

func FxPoisonStart(object pClonk,int iEffectNumber, int iTemp, fSnake, pCaster)
{
	EffectVar(2, pClonk, iEffectNumber) = GetController(pCaster);
	return _inherited(pClonk, iEffectNumber, iTemp, fSnake);
}

func FxPoisonTimer(pClonk, iEffectNumber, iEffectTime)
{
  if(iEffectTime >= 1200) return(-1);
  var fSnake = EffectVar(1, pClonk, iEffectNumber);
  var idType = GetID(pClonk);
  CreateParticle("PoisonWave", GetX(pClonk), GetY(pClonk), 0, -1, EffectVar(0, pClonk, iEffectNumber)*5+50, RGBa(fSnake*200, 255, 0), pClonk, 1);
  CreateParticle("PSpark", GetX(pClonk), GetY(pClonk), 0, -1, EffectVar(0, pClonk, iEffectNumber)*5+50, RGBa(fSnake*55, 55, 0), pClonk, 1);
  if(GBackLiquid(GetX(pClonk), GetY(pClonk))) return(-1);
         
	if(!(iEffectTime % 25))
	{
		var pFrom = GetCursor(EffectVar(2, pClonk, iEffectNumber));
		if(pFrom) pFrom->DoEnergy(-1, pClonk);
		else DoEnergy(-1, pClonk);
	}
  var obj;
  var iRadius = EffectCall(pClonk,iEffectNumber,"MaxRange");
  while(obj = FindObject(0, -iRadius+GetX(pClonk),-iRadius+GetY(pClonk),iRadius*2,iRadius*2, OCF_Alive(),0,0, NoContainer(), obj))
  {
    if(!GetEffect("Poison", obj))
	{
		if(!GetAction(obj)S="Field")
		{
			AddEffect("Poison",obj,182,10,0,MGPL,fSnake,pFrom);
		}
	}
  }
  return(1); 
}

func FxPoisonMaxRange() { return(175); }