MCPcopy Create free account
hub / github.com/assaultcube/AC / trypickupflag

Function trypickupflag

source/src/entities.cpp:354–389  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

352}
353
354void trypickupflag(int flag, playerent *d)
355{
356 if(d==player1)
357 {
358 flaginfo &f = flaginfos[flag];
359 flaginfo &of = flaginfos[team_opposite(flag)];
360 if(f.state == CTFF_STOLEN) return;
361 bool own = flag == team_base(d->team);
362
363 if(m_ctf)
364 {
365 if(own) // it's the own flag
366 {
367 if(f.state == CTFF_DROPPED) flagreturn(flag);
368 else if(f.state == CTFF_INBASE && of.state == CTFF_STOLEN && of.actor == d && of.ack) flagscore(of.team);
369 }
370 else flagpickup(flag);
371 }
372 else if(m_htf)
373 {
374 if(own)
375 {
376 flagpickup(flag);
377 }
378 else
379 {
380 if(f.state == CTFF_DROPPED) flagscore(f.team); // may not count!
381 }
382 }
383 else if(m_ktf)
384 {
385 if(f.state != CTFF_INBASE) return;
386 flagpickup(flag);
387 }
388 }
389}
390
391void checkitems(playerent *d)
392{

Callers 1

checkitemsFunction · 0.85

Calls 3

flagreturnFunction · 0.85
flagscoreFunction · 0.85
flagpickupFunction · 0.85

Tested by

no test coverage detected